perm filename DSKDMP.LST[SS,SYS] blob sn#854963 filedate 1988-03-23 generic text, type T, neo UTF8
		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  1
 .MAIN	

     1					COMMENT ⊗   VALID 00021 PAGES
     2					C REC  PAGE   DESCRIPTION
     3					C00001 00001
     4					C00006 00002	 TYPXFR DEBSW DSKDSW EXTNEW CSAVE KLBOOT DSKDBG RHDSK FT1DSK KA
	CODE NPACKS EXTNEW F A B C D E H J K L M P1 P2 P3 P4 T1 T2 T3 N T TT P HILOC NUFDWD RBO CUADR APR PI KLPAG CCA 
	TTY C1A C1B DTE0 DTFLG DTF11 DTCMD DONG11 SWEEPB PIOFF DSTART DSTART CSVFIL KLEPT A%FP0 KLEPT R2WLSH RECSIZ RTL
	SIZ DATRPB RTLSIZ DATRPB WDPCHN DATSIZ BLKSIZ
     5					C00015 00003	 PTPC PTR PNCHGO GO1 GO2 PUNCHC PUNCH RIMLDR RIMLDL RIMPDL OBUF
	 BOOTLO BOOTBG BOOTBG XBUF XBUF BOOTBG BOOTBG XBUF NDATA BDATA KLEPT A%FP0
     6					C00021 00004	 C1SBI C1RSI C1SRUN C1CONT C1SCH C1RST C1CCIF C1INTE C1INTD C1S
	CF1 C1CCF1 C1MPCN C1LCD C1LPT C1SYSR C1SCAN C1SDIA CIF CF1 CF2 C1UCHK
     7					C00026 00005	 C1CMD C1MRT C1JMP C1TIO C1IWC C1BAK C1NATM C1BYTM C1CBYT C1SLE
	 C1CEC C1NOC C1RPT C1CCW C1ISW C1PTPE C1PTNX C1IQF C1PPTR C1PCW C1BW C1STA C1HLT C1LE C1SE C1PE C1NXM C1BPE C1S
	SE C1PCMA C1STB C1STC C1INST
     8					C00032 00006	 MFDLOC TRKCYL CYLPK TRKPK NXTQQQ A NXTQQQ NXTQQQ DPTRBP DPTEBP
	 DPTRBP DPTEBP
     9					C00037 00007	DSKDMP.DMP FORMAT
    10					C00041 00008	 LOWEST BOOT BOOT1 BOOTL1 BOOTL2 BOOTL3 NOMFD NODSKD NOSYS
    11					C00049 00009	 LOWEST DSKDMP DSKDM0 DSKDM1 DSKDM2 DSKDL DSKDL2 DSKDL1 DSKDRO 
	DSKDAL DSKAL1 QQQ DSKDGO CMDS NCMDS CMDDSP SSTRTA SSTRT1 SSTRT2 START LOADGO NOMUCK MERGE LOAD LOADN LOADIT LDI
	T0 LDIT0A LDIT1 LDIT3 LDIT4 LDIT2 LDLP LDLP1 LDLP3 FILES DUMP KILL NSA FNF
    12					C00065 00010	 FILSET FILSE0 FILSE1 FILSIX FILSI1 RADJ RADJ1
    13					C00070 00011	 SRCH SRCH1 SRCH2 SRCH3 SRCHLP SRCH5 SRCH4 RDRET READ READ0 REA
	DC1 C1WAIT C1WAIA C1WAIB C1WERR C1DIE C1MPIL C1MPI1 C1SET BLAST RSTC1
    14					C00081 00012	 TYPE TYPE1 TYO CPOPJ1 CPOPJ DTEXX KLTYO KLTYI TYI KLTYI1 POPCJ
	 TYICAN FILTYP PPNTYP TYPSIX TYPSI1 TWAIT OCTTYP OCTTY1
    15					C00088 00013	 C1ZERO C1APT C1BPT C1PH C1ZEND C1FRST C1ERR C1PTP C1PPTP C1CIF
	I ZZZ C1MRTC C1CCHR C1MRTD C1WCHN RCLTAB XBUF LPDL LPDL PDL ERRCNT RECORD NXTTRK SYMPNT SYSLOC PATCH PATCH1 LOD
	CNT LODNXT XFRCNT STARTA KASIM MUCKFL ZERFLG FHILOC UPPRST TIBFLN TIBUF FNAM FEXT FPPN DEFDEV DEFEXT DEFPPN FDE
	V
    16					C00096 00014	 FDZBEG DIORG ICCW RH2CYL MAXUNI DSKTYP NUMCYL NUMSCL NUMSTK ST
	RNAM RMXDRV DSKTAB FDZEND NDSKOP NDSKLZ RMXDRV PAGSIZ HOMNAM HOMSNM HOMLUN HOMHOM HOMRXB HOMSIZ HOMFSN HOMCOD H
	OMSLF CODHOM ICA ENTFLG MAXCHN MAXDRV RH0 .RHRAE .RHMBR .RHCTE .RHMBE .RHSTP .RHDON RHERR LR R4%CSR R4%CRC R4%R
	IP R4%CPA R4%CRD R4%DSR .RPERR .RPMOL .RPDRY R4%ATN R4%DST R4%DTR R4%TYP R4%DC .RHSBR .RHSTR RCLP STLW R4%TYP .
	R4TYP .R5TYP .R6TYP .R7TY2 .R7TY1 .R3TYP RHERR NRETRY TIMOUT R4%CRC R4%CDC R4%RIP R4%CPA R4%CRD N.SCL3 N.SCL4 N
	.SCL7 N.CLP3 N.CLP4 N.CLP6 N.CLP7 N.CLP6 N.CLP7 N.STK3 N.STK7 N.STK4 N.BKPG
    17					C00108 00015	 BLAST FDSK FDSK1 FDSK2 FDSK2A FDSK3 FDSK4 CHKSTR MISSTR MISUN2
	 MISUNI
    18					C00115 00016	 GOTDRV GOTDV3 GOTDV4 GOTDV0 GOTDV2
    19					C00122 00017	 RHREAD RHWRIT RHCONI RHCONO XIO1 RDDISK RD11 RD0 RD00 RD0A DOO
	P1 TYPGOO DOOP2 TYPFOO
    20					C00132 00018	 CHKHOM CHKHO2 BADUNI DPLUNI BADSTR BADUN2
    21					C00136 00019	 FF
    22					C00137 00020	 CSVNAM CSVLEN CS MKCSAV NODSK NOENT NOOUT
    23					C00140 00021	 END 
    24					C00141 ENDMK
    25					C⊗;
    26					
			FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  2
	 .MAIN	

    27					;⊗ TYPXFR DEBSW DSKDSW EXTNEW CSAVE KLBOOT DSKDBG RHDSK FT1DSK KACODE NPACKS EX
	TNEW F A B C D E H J K L M P1 P2 P3 P4 T1 T2 T3 N T TT P HILOC NUFDWD RBO CUADR APR PI KLPAG CCA TTY C1A C1B DT
	E0 DTFLG DTF11 DTCMD DONG11 SWEEPB PIOFF DSTART DSTART CSVFIL KLEPT A%FP0 KLEPT R2WLSH RECSIZ RTLSIZ DATRPB RTL
	SIZ DATRPB WDPCHN DATSIZ BLKSIZ
    28					
    29					;ASSEMBLY SWITCHES, TITLE AND AC DEFINITIONS
    30					
    31					;"BOOT" means the program that's loaded into 11 memory that runs in response to
    32					;the DS command in KLDCP.
    33					;
    34					;"DSKDMP" means the program that's run by BOOT.  It generally has DDT and a
    35					;file name scanner, etc.
    36					;
    37					;"CSAVE" is a file format generated by doing a REENTER into a DSKDMP core image
    38					;from a WAITS job.  The CSAVE file is converted to an 11-format file and put
    39					;on the front-end 11's file system.  From there it is loaded and started
    40					;by the 11 to boot the system.  CSAVE is hence a copy of DSKDMP run by the 11
    41					;(on the 10) for booting.
    42					
    43					;Switches for debugging.
    44	       	000000 	000000 		TYPXFR←←0	;Nonzero to type out a character for each disk xfer done OK
    45	       	000000 	000000 		DEBSW←←0	;If BOOT, 0 for paper tape, 1 for DECtape with EDDT
    46							;If DSKDMP, 0 for real DSKDMP, 1 for DSKDMP with EDDT
    47					
    48					;Switches actually used to select compilation results.
    49	       	000000 	000001 		DSKDSW←←1	;0 for BOOT, 1 for DSKDMP
    50	       	000000 	000003 		EXTNEW←←3	;If BOOT, 0 finds DSKDMP.DMP, 1 finds .NEW, 2 .OLD, 3 .TST
    51					
    52					;Switches that are rarely changed.
    53	       	000000 	000001 		CSAVE←←1	;1 to include code at REENTER command to generate CSAVE boot fi
	le
    54	       	000000 	000001 		KLBOOT←←1	;If BOOT, 1 for KLDCP loadable BOOT, 0 for paper tape
    55	       	000000 	000001 		DSKDBG←←1	;1 for being able to load DSKDMP with EDDT, fixes symb tab ptr
    56	       	000000 	000001 		RHDSK←←1	;1 for RH20 disks, 0 for C1 channel disks
    57	       	000000 	000001 		FT1DSK←←1	;1 if all C1 disk packs are on same controller (not RHDSK)
    58	       	000000 	000000 		KACODE←←0	;1 to include run time checks for KA-10 and KASIM microcode
    59					
    60	       	000000 	000010 		NPACKS←←8	;number of disk drives on C1 channel
    61					
    62					XALL	;suppress macro expansion in listing
    63					
    64					DEFINE SWLIST <FOR SWITCH IN (CSAVE,TYPXFR,DEBSW,DSKDSW,DSKDBG,KLBOOT,RHDSK,FT1
	DSK,EXTNEW)>
    65					
    66					DEFINE VALPNT (VAL) <
    67					PRINTS /VAL/
    68					>
    69					PRINTS /SWITCHES ARE:
    70					/
    71					
    72					SWLIST <
	
			FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  2-2
	 .MAIN	

    73					PRINTS /SWITCH(/
    74					VALPNT (\SWITCH)
    75					PRINTS /) /
    76					>
    77					
    78					PRINTS /
    79					/
    80					
    81					repeat 0,<
    82					PRINTS /Type new values for these symbols, if any, followed by CONTROL-META-LF
    83					/
    84					.INSERT TTY:
    85					>;repeat 0
    86					
    87					SWLIST <
    88					IFDIF <SWITCH><EXTNEW><
    89					IFN SWITCH,<↓SWITCH←←1>
    90					IFE SWITCH,<↓SWITCH←←0>
    91					>;IFDIF
	       	000000 	000001 	
	       	000000 	000000 	
	       	000000 	000000 	
	       	000000 	000001 	
	       	000000 	000001 	
	       	000000 	000001 	
	       	000000 	000001 	
    92	       	000000 	000001 		>;SWLIST
    93					IFL EXTNEW,<.FATAL EXTNEW has illegal value, must be 0, 1, 2 or 3.>
    94					IFG EXTNEW-3,<.FATAL EXTNEW has illegal value, must be 0, 1, 2 or 3.>
    95	       	000000 	000003 		↓EXTNEW←←EXTNEW
    96					
    97	       	000000 	000000 		IFN DSKDSW,<KLBOOT←←0>
    98					IFN KLBOOT,<
    99					DEBSW ←← 0
   100					DSKDBG ←← 0
   101					CSAVE ←← 1
   102					>;IFN KLBOOT
   103					
   104					IFN DSKDSW,<
   105					TITLE DSKDMP
   106					>;IFN DSKDSW
   107					
   108					IFE DSKDSW,<
   109					IFE EXTNEW,<	TITLE BOOT	>
   110					IFE EXTNEW-3,<	TITLE TBOOT	>
   111					IFE EXTNEW-2,<	TITLE OBOOT	>
   112					IFE EXTNEW-1,<	TITLE NBOOT	>
   113					>;IFE DSKDSW
   114					
   115	       	000000 	000000 		F←0
   116	       	000000 	000001 		A←1
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  2-3
	DSKDMP	

   117	       	000000 	000002 		B←2
   118	       	000000 	000003 		C←3
   119	       	000000 	000004 		D←4
   120					repeat 0,< ;unused
   121					E←5
   122					H←7
   123					J←10
   124					K←11
   125					L←12
   126					M←13
   127					>;repeat 0
   128					ifn rhdsk,<
   129	       	000000 	000005 		P1←5
   130	       	000000 	000006 		P2←6
   131	       	000000 	000007 		P3←7
   132	       	000000 	000010 		P4←10
   133	       	000000 	000011 		T1←11
   134	       	000000 	000012 		T2←12
   135	       	000000 	000013 		T3←13
   136					>;ifn rhdsk
   137	       	000000 	000014 		N←14
   138	       	000000 	000015 		T←15
   139	       	000000 	000016 		TT←16
   140	       	000000 	000017 		P←17
   141					
   142	       	000000 	000135 		HILOC←←135
   143					
   144	       	000000 	000020 		NUFDWD←←20
   145					
   146					IFN DSKDSW,<
   147					;RIGHT HALF F BITS
   148	       	000000 	000001 		RBO←←1			;DOING RUBOUT NOW
   149					>;IFN DSKDSW
   150					
   151					IFE RHDSK,<
   152					↓CUADR←←6			;CONTROL UNIT ADDRESS
   153					>;IFE RHDSK
   154					
   155					;Device codes
   156	       	000000 	000000 		APR←←0
   157	       	000000 	000004 		PI←←4
   158	       	000000 	000010 		KLPAG←←10
   159	       	000000 	000014 		CCA←←14
   160	       	000000 	000120 		TTY←←120
   161					IFE RHDSK,<
   162					C1A←←140
   163					C1B←←144
   164					>;IFE RHDSK
   165	       	000000 	000200 		DTE0←←200
   166					
   167					;KL10 PARAMETERS, offsets within EPT
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  2-4
	DSKDMP	

   168	       	000000 	000444 		DTFLG←←444		;DTE20 OPERATION COMPLETE FLAG
   169	       	000000 	000450 		DTF11←←450		;      FROM 11 ARGUMENT
   170	       	000000 	000451 		DTCMD←←451		;      TO 11 COMMAND
   171					
   172					IFN KACODE,<
   173					DEFINE SKPKA <CONSO TTY,1B28>	;SKIP IF THIS IS THE KA10
   174					DEFINE SKPKL <CONSZ TTY,1B28>	;SKIP IF THIS IS THE KL10
   175					>;IFN KACODE
   176					IFE KACODE,<
   177					;DEFINE SKPKA <CAI>		;SKIP IF THIS IS THE KA10 (never)
   178					;DEFINE SKPKL <CAIA>		;SKIP IF THIS IS THE KL10 (always)
   179					>;IFE KACODE
   180					
   181	       	000000 	020000 		DONG11←←20000				;DTE CONO BIT.  REQUEST 11 INTERRUPT
   182	       	000000 	200000 		SWEEPB←←200000				;KL10 APR CONI BIT - SWEEP BUSY
   183	       	000000 	000400 		PIOFF←←400
   184					
   185					IFN DEBSW,<
   186						LOC 74
   187						JRST DDT↑
   188					IFN DSKDSW,<
   189						LOC 140
   190						274
   191						FF
   192						LOWEST
   193					>;IFN DSKDSW
   194						LOC 300
   195						JRST DDT
   196					IFE DSKDSW,<
   197						JRST BOOT
   198						LOC 100000
   199					>;IFE DSKDSW
   200					IFN DSKDSW,<
   201						JRST DSKDMP
   202						LOC 500000	;arbitrary I think, used to be 300000
   203					>;IFN DSKDSW
   204					DSTART::
   205					>;IFN DEBSW
   206					
   207					IFE DEBSW,<
   208					IFN DSKDSW,<
   209	       	000000 	760000 		DSTART←←760000		;address where DSKDMP code will start
   210					IFN CSAVE,<
   211						LOC 124		;REENTER command will generate a CSAVE boot file
   212	000124 	000000 	000000 			MKCSAV		;  which can be put in front-end's file system
   213					>;IFN CSAVE
   214						LOC 140
   215	000140 	000000 	760000 			DSTART		;LOCATION FOR LOADING STARTING AT 274
   216	000141 	000000 	000000 			FF		;FIRST FREE
   217	000142 	000000 	000000 			LOWEST		;LOWEST LOCATION USED
   218					IFN CSAVE,<
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  2-5
	DSKDMP	

   219						LOC 273
   220	000273 	000000 	757777 		CSVFIL:	IOWD CSVLEN,DSTART ;for 11 boot: nbr of words to load, where to start l
	oading
   221					>;IFN CSAVE
   222						LOC 274
   223						PHASE DSTART
   224					>;IFN DSKDSW
   225					>;IFE DEBSW
   226					
   227					IFN RHDSK,<
   228					IFE KLBOOT,<
   229	       	000000 	756000 		KLEPT←<DSTART-2000>&777000 ;the KL EPT will be in the 2nd previous page
   230	       	000000 	757000 		A%FP0←<DSTART-1000>&777000 ;and special disk buffer will follow KLEPT
   231					>;IFE KLBOOT
   232					>;IFN RHDSK
   233					IFE RHDSK,<
   234					KLEPT←←0
   235					>;IFE RHDSK
   236					
   237	       	000000 	000007 		R2WLSH←←7		;amount to shift record count to make word count
   238	       	000000 	000200 		RECSIZ←←<1⊗R2WLSH>	;size of a data record, in words
   239					IFE RHDSK,<
   240					RTLSIZ←←40		;size of retrieval disk sector in words
   241					DATRPB←←=18		;data records per block
   242					>;IFE RHDSK
   243					IFN RHDSK,<
   244	       	000000 	000200 		RTLSIZ←←200		;size of retrieval disk sector in words
   245	       	000000 	000010 		DATRPB←←=8		;data records per block on RP07 (should get this from h
	ome blk)
   246	       	000000 	000004 		WDPCHN←←4		;number of words in logout area of a single RH20 channe
	l
   247					>;IFN RHDSK
   248	       	000000 	002000 		DATSIZ←←DATRPB*RECSIZ	;size of disk block, not counting retrieval area
   249	       	000000 	002200 		BLKSIZ←←DATSIZ+RTLSIZ	;size of disk block in words, incl retrieval area
   250					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  3
	DSKDMP	

   251					;⊗ PTPC PTR PNCHGO GO1 GO2 PUNCHC PUNCH RIMLDR RIMLDL RIMPDL OBUF BOOTLO BOOTBG
	 BOOTBG XBUF XBUF BOOTBG BOOTBG XBUF NDATA BDATA KLEPT A%FP0
   252					
   253					;WRITE OUT RIM FORMAT BOOT, PNCHGO
   254					
   255					IFE DSKDSW,<
   256					IFE KLBOOT,<
   257					IFE DEBSW,<
   258					
   259					PTPC←←1
   260					PTR←←104
   261					
   262					LOC 200
   263					
   264					PNCHGO:	RESET
   265						MOVE P,[-20,,RIMPDL]
   266						INIT PTPC,13
   267						SIXBIT /PTP/
   268						OBUF,,
   269						JRST 4,.
   270						MOVSI C,-RIMLDL
   271					GO1:	MOVE A,RIMLDR(C)
   272						PUSHJ P,PUNCH
   273						AOBJN C,GO1
   274						MOVEI D,0		;INITIALIZE CHECKSUM
   275						MOVE A,[BOOTBG,,BOOTBG]
   276						PUSHJ P,PUNCHC
   277						MOVSI C,BOOTBG
   278					GO2:	MOVE A,BOOTLO(C)
   279						PUSHJ P,PUNCHC		;PUNCH AND CHECKSUM
   280						AOBJN C,GO2
   281						MOVE A,D
   282						PUSHJ P,PUNCH		;PUNCH OUT CHECKSUM
   283						MOVE A,[JRST BOOT]
   284						PUSHJ P,PUNCH
   285						MOVEI A,0
   286						PUSHJ P,PUNCH
   287						EXIT
   288					
   289					PUNCHC:	ROT D,1
   290						ADD D,A
   291					PUNCH:	SOSG OBUF+2
   292						OUT PTPC,
   293						CAIA
   294						JRST 4,.
   295						IDPB A,OBUF+1
   296						POPJ P,
   297					
   298					RIMLDR:	-17,,0			;IOWD TO RIM LOADER
   299						CONO PTR,60
   300						HRRI 11,4
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  3-2
	DSKDMP	

   301						CONSO PTR,10
   302						JRST 3
   303						ROT 0,-2(11)
   304						DATAI PTR,@10(11)
   305						XCT 10(11)
   306						XCT 13(11)
   307						SOJA 11,0
   308						CAME 0,17
   309						ADD 0,(17)
   310						SKIPL 17,0
   311						JRST 4,1
   312						AOBJN 17,3
   313						JRST 2
   314					RIMLDL←←.-RIMLDR
   315					
   316					RIMPDL:	BLOCK 20
   317					OBUF:	BLOCK 3
   318					
   319					LIT
   320					VAR
   321					
   322					LOC 1000
   323					
   324					BOOTLO:
   325					IFE RHDSK,<
   326					BOOTBG←←777000
   327					>;IFE RHDSK
   328					IFN RHDSK,<
   329					BOOTBG←←775000	;need more room for RH version
   330					>;IFN RHDSK
   331					PHASE BOOTBG
   332					XBUF←←BOOTBG-BLKSIZ
   333					>;IFE DEBSW
   334					>;IFE KLBOOT
   335					>;IFE DSKDSW
   336					
   337					IFN DEBSW,<
   338					IFE DSKDSW,<
   339					XBUF:	BLOCK BLKSIZ
   340					>;IFE DSKDSW
   341					>;IFN DEBSW
   342					
   343					IFN KLBOOT,<
   344					IFE DEBSW,<
   345					IFE RHDSK,<
   346					BOOTBG←←777000	;CHANGE TO 777000 WHEN SOME MEMORY IS UP THERE
   347					>;IFE RHDSK
   348					IFN RHDSK,<
   349					BOOTBG←←775000	;need more room for RH version (allow room for symbols)
   350					>;IFN RHDSK
   351						LOC 140
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  3-3
	DSKDMP	

   352						BOOTBG
   353						FF
   354						LOWEST
   355						LOC 274
   356						PHASE BOOTBG
   357					XBUF←←BOOTBG-BLKSIZ
   358					>;IFE DEBSW
   359					IFN RHDSK,<
   360					NDATA←←100		;max number of data words outside code loaded in KLDCP
   361					BDATA←←XBUF-NDATA	;place where data area starts
   362					KLEPT←<XBUF-NDATA-2000>&777000 ;the KL EPT will be in the 2nd page preceding XB
	UF
   363					A%FP0←<XBUF-NDATA-1000>&777000 ;and special disk buffer will follow KLEPT
   364					>;IFN RHDSK
   365					
   366					.DATA←←BDATA		;initialize address to beginning of data area
   367					DEFINE DATAWD(SYM,LEN)<
   368					SYM←.DATA
   369					.DATA←←.DATA+LEN	;allocate LEN words at SYM
   370					IFG .DATA-BDATA-NDATA,<.FATAL Increase NDATA (data area size) and recompile>
   371					>;DEFINE
   372					>;IFN KLBOOT
   373					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  4
	DSKDMP	

   374					;⊗ C1SBI C1RSI C1SRUN C1CONT C1SCH C1RST C1CCIF C1INTE C1INTD C1SCF1 C1CCF1 C1M
	PCN C1LCD C1LPT C1SYSR C1SCAN C1SDIA CIF CF1 CF2 C1UCHK
   375					
   376					;C1 CHANNEL DEFINITIONS
   377					
   378					IFE RHDSK,<
   379					
   380					;CONO C1A BITS
   381					
   382					C1SBI←←400000		;SELECT BUS INTERFACE
   383					  C1RSI←←40000		;RESET INTERFACE
   384					  C1SRUN←←10000		;SET CLOCK RUN
   385					  C1CONT←←2000		;CONTINUE CLOCK
   386					C1SCH←←200000		;SELECT CHANNEL
   387					  C1RST←←40000		;RESET CHANNEL
   388					  C1CCIF←←20000		;CLEAR CHANNEL INTERRUPT FLAG
   389					  C1INTE←←10000		;INTERRUPT ENABLE
   390					  C1INTD←←4000		;INTERRUPT DISABLE
   391					  C1SCF1←←2000		;SET CF1
   392					  C1CCF1←←1000		;CLEAR CF1
   393					  C1MPCN←←400		;CONTINUE MICROPROCESSOR
   394					  C1LCD←←20		;LOAD CODE FROM BITS 32-35
   395					;BITS 32-35 ARE A CODE, BIT 32 IS OFF FOR "SOFTWARE" CODES:
   396					  C1LPT←←11		;LOAD PROGRAM TABLE STARTING ADDRESS
   397					  C1SYSR←←2		;SYSTEM RESET
   398					  C1SCAN←←7		;SCAN PROGRAM TABLE FOR PROGRAMS TO START
   399					
   400					C1SDIA←←100000		;SELECT DIAGNOSTIC FUNCTIONS
   401					
   402					;CONI C1A BITS
   403					
   404					CIF←←4			;CHANNEL INTERRUPT FLAG
   405					CF1←←2			;CHANNEL FLAG 1 (INTERRUPT THE Z80, SET FROM ICH IN CON
	O)
   406					CF2←←1			;CHANNEL FLAG 2 (Z80 READY FOR PROGRAM TABLE ADDRESS)
   407					
   408					C1UCHK←←2		;UNIT CHECK IN IBM STATUS BYTE
   409					
   410					>;IFE RHDSK
   411					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  5
	DSKDMP	

   412					;⊗ C1CMD C1MRT C1JMP C1TIO C1IWC C1BAK C1NATM C1BYTM C1CBYT C1SLE C1CEC C1NOC C
	1RPT C1CCW C1ISW C1PTPE C1PTNX C1IQF C1PPTR C1PCW C1BW C1STA C1HLT C1LE C1SE C1PE C1NXM C1BPE C1SSE C1PCMA C1ST
	B C1STC C1INST
   413					
   414					;C1 CHANNEL DATA AREA PARAMETERS
   415					
   416					IFE RHDSK,<
   417					
   418					;CHANNEL PROGRAM DEFINITIONS
   419					;LEFT HALF BITS
   420					C1CMD←←100000			;BITS 0-3 = 10 MEANS (NON-MRT) COMMAND WORD
   421					C1MRT←←040000			;BITS 0-3 = 04 MEANS MRT COMMAND WORD
   422					C1JMP←←200000			;BITS 0-3 = 20 MEANS JUMP COMMAND WORD
   423					C1TIO←←020000			;TEST I/O
   424					C1IWC←←010000			;IGNORE WORD COUNT
   425					C1BAK←←004000			;BACKWARDS
   426					C1NATM←←000000			;NATURAL MODE (MODE IN BITS 7-8)
   427					C1BYTM←←001000			;BYTE MODE
   428					C1CBYT←←000400			;COUNT BYTES
   429									;BITS 10-17 ARE THE IBM COMMAND BYTE
   430					;RIGHT HALF BITS
   431					C1SLE←←20			;STOP ON LENGTH ERROR
   432					C1CEC←←10			;CHANNEL END CONTINUE
   433					C1NOC←←2			;NO CHAINING
   434					C1RPT←←1			;REPEAT UNTIL STATUS MODIFIER IS ON IN ENDING S
	TATUS
   435					
   436					
   437					
   438					
   439					;PROGRAM TABLE
   440					C1CCW←←0			;RELATIVE ADDRESS OF CHANNEL CONTROL WORD
   441					C1ISW←←1			;INTERRUPT SOURCE WORD
   442					   C1PTPE←←100000		;PARITY ERROR IN PROGRAM TABLE
   443					   C1PTNX←←40000		;NXM IN PROGRAM TABLE
   444					   C1IQF←←20000			;INTERRUPT QUEUE FULL
   445					C1PPTR←←2			;FIRST PROGRAM POINTER
   446					
   447					;PROGRAM HEADER AND PROGRAM
   448					C1PCW←←0			;RELATIVE ADDRESS OF PROGRAM CONTROL WORD
   449					   C1BW←←100			   ;BUSY WAIT BIT IN PCW
   450					C1STA←←1			;STATUS A
   451					  ;RIGHT HALF BITS
   452					   C1HLT←←400000		;PROGRAM EXECUTED A HALT
   453					   C1LE←←200000			;LENGTH ERROR
   454					   C1SE←←100000			;SELECT ERROR
   455					   C1PE←←040000			;PARITY ERROR
   456					   C1NXM←←020000		;NXM
   457					   C1BPE←←010000		;IBM BUS PARITY ERROR
   458					   C1SSE←←002000		;SIGNAL SEQUENCE ERROR
   459					  ;LEFT HALF BITS
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  5-2
	DSKDMP	

   460					   C1PCMA←←100000		;1→ERROR POINTER TO BY PC, 0→POINTED TO BY MA
   461					C1STB←←2			;STATUS B
   462					C1STC←←3			;STATUS C
   463					C1INST←←4			;FIRST INSTRUCTION OF CHANNEL PROGRAM
   464					>;IFE RHDSK
   465					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  6
	DSKDMP	

   466					;⊗ MFDLOC TRKCYL CYLPK TRKPK NXTQQQ A NXTQQQ NXTQQQ DPTRBP DPTEBP DPTRBP DPTEBP
   467					
   468					;FILE SYSTEM PARAMETERS
   469					
   470					IFE RHDSK,<
   471					MFDLOC←←1		;TRACK CONTAINING MFD
   472					
   473					TRKCYL←←=19		;19 HEADS PER CYLINDER
   474					CYLPK←←=815		;815 CYLINDERS PER PACK
   475					TRKPK←←TRKCYL*CYLPK	;19*815=15485 TRACKS PER PACK
   476					>;IFE RHDSK
   477					
   478					;RETRIEVAL INFORMATION
   479					
   480	       	000000 	000000 		NXTQQQ←←0
   481					
   482					DEFINE ZWD (A) <
   483					A←←NXTQQQ
   484					NXTQQQ←←NXTQQQ+1
   485					>
   486					
	       	000000 	000000 	
   487	       	000000 	000001 			ZWD DDNAM	;FILE NAME
	       	000000 	000001 	
   488	       	000000 	000002 			ZWD DDEXT	;FILE EXTENSION,,DATE WRITTEN,CREATION DATE
	       	000000 	000002 	
   489	       	000000 	000003 			ZWD DDPRO	;PROTECTION,MODE,TIME,DATE WRITTEN
	       	000000 	000003 	
   490	       	000000 	000004 			ZWD DDPPN	;PPN
	       	000000 	000004 	
   491	       	000000 	000005 			ZWD DDLOC	;FIRST DISK ADDRESS OF THIS FILE
	       	000000 	000005 	
   492	       	000000 	000006 			ZWD DDLNG	;LENGTH OF FILE IN WORDS
	       	000000 	000006 	
   493	       	000000 	000007 			ZWD DREFTM
	       	000000 	000007 	
   494	       	000000 	000010 			ZWD DDMPTM
	       	000000 	000010 	
   495	       	000000 	000011 			ZWD DGRP1R	;FIRST USER RCRD NO. THIS GRP
	       	000000 	000011 	
   496	       	000000 	000012 			ZWD DNXTGP	;BLOCK NUMBER OF NEXT GROUP
	       	000000 	000012 	
   497	       	000000 	000013 			ZWD DSATID
	       	000000 	000013 	
   498	       	000000 	000014 			ZWD DQINFO	;START OF SPECIAL STORAGE FOR LOGIN ETC.
   499	       	000000 	000017 		NXTQQQ←←NXTQQQ+3
	       	000000 	000017 	
   500	       	000000 	000020 			ZWD DOFFST	;RECORD OFFSET
	       	000000 	000020 	
   501	       	000000 	000021 			ZWD DPTR	;RETRIEVAL DATA, 2 BLK NO.'S/WORD
   502					
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  6-2
	DSKDMP	

   503					IFE RHDSK,<
   504					DPTRBP←←<POINT 18,DPTR>	;C1 disk format uses half-word retr ptrs
   505					DPTEBP←←<POINT 18,RTLSIZ-1,35> ;byte ptr to last retr ptr
   506					>;IFE RHDSK
   507					IFN RHDSK,<
	000274 	444400 	000020 	
   508	       	444400 	000020 		DPTRBP←←<POINT 36,DPTR>	;RH format uses full-word retr ptrs
	000274 	004400 	000177 	
   509	       	004400 	000177 		DPTEBP←←<POINT 36,RTLSIZ-1,35> ;byte ptr to last retr ptr
   510					>;IFN RHDSK
   511					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  7
	DSKDMP	

   512					;DSKDMP.DMP FORMAT
   513					
   514					COMMENT ⊗
   515					
   516					DSKDMP.DMP[SS,SYS] IS AN ORDINARY DUMP FILE EXCEPT THAT IT HAS BEEN
   517					ASSEMBLED WITH A PHASE STATEMENT AND EXPECTS TO BE LOADED HIGH IN
   518					THE FIRST 256K OF CORE.  LOCATION 140 OF THE CORE IMAGE THAT WOULD
   519					HAVE BEEN OBTAINED BY LOADING DSKDMP CONTAINS THE STARTING ADDRESS
   520					FOR LOADING.  LOCATION 274 IS THE FIRST WORD THAT SHOULD BE LOADED
   521					THERE.  LOCATION 141 CONTAINS THE RELOCATED FIRST FREE ADDRESS, 142
   522					CONTAINS THE RELOCATED LOWEST ADDRESS.  THESE TWO LOCATIONS ARE USED
   523					ONLY BY THE CNVRT PROGRAM TO MAKE DSKDMP.D10
   524					
   525					⊗
   526					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  8
	DSKDMP	

   527					;⊗ LOWEST BOOT BOOT1 BOOTL1 BOOTL2 BOOTL3 NOMFD NODSKD NOSYS
   528					
   529					;BOOT BEGINS HERE
   530					
   531					IFE DSKDSW,<
   532					LOWEST←←.
   533					BOOT:	CONO APR,200000		;RESET
   534						SETZM KASIM
   535					IFN RHDSK,<
   536						CONO KLPAG,KLEPT⊗-9	;TURN OFF CACHE.  set EPT address.  TURN OFF MA
	P
   537					>;IFN RHDSK
   538					IFN KACODE,<
   539						BLKI APR,A		;GET UCODE OPTIONS INTO BITS 0-8 OF A
   540						TLNE A,100000		;SKIP UNLESS KA SIMULATION UCODE LOADED
   541						SETOM KASIM
   542					>;IFN KACODE
   543					IFN KLBOOT,<
   544						SETZB P1,BDATA		;Channel 0 to P1 for BLAST, set up for BLT
   545						MOVE T1,[BDATA,,BDATA+1] ;Prepare to clear data area
   546						BLT T1,BDATA+NDATA-1	;Initialize data area to zero
   547					>;IFN KLBOOT
   548						MOVE P,[-LPDL,,PDL-1]
   549						PUSHJ P,BLAST		;RESET THE CHANNEL or read the home blocks
   550					IFN DSKDBG,<
   551						SKIPE N,SYSLOC
   552						JRST BOOT1
   553					>;IFN DSKDBG
   554					IFN RHDSK,<
   555						SKIPN N,DIORG		;get location of the MFD
   556						 JRST NOMFD		;none
   557					>;IFN RHDSK
   558					IFE RHDSK,<
   559						MOVEI N,MFDLOC
   560					>;IFE RHDSK
   561						MOVE A,[SIXBIT / SSSYS/]
   562						PUSHJ P,SRCH		;LOOK FOR _SSSYS.UFD IN MFD
   563						 JRST NOSYS
   564						MOVE N,3(TT)		;GET ADDRESS
   565					IFN DSKDBG,<
   566						MOVEM N,SYSLOC
   567					>;IFN DSKDBG
   568					BOOT1:	MOVE A,[SIXBIT /DSKDMP/]
   569					IFE EXTNEW,<	MOVSI B,'DMP'	>
   570					IFE EXTNEW-1,<	MOVSI B,'NEW'	>
   571					IFE EXTNEW-2,<	MOVSI B,'OLD'	>
   572					IFE EXTNEW-3,<	MOVSI B,'TST'	>
   573						PUSHJ P,SRCH1			;LOOK FOR DSKDMP.DMP[SS,SYS]
   574						 JRST NODSKD
   575						MOVE N,3(TT)			;GET DISK ADDRESS OF DSKDMP.DMP[SS,SYS]
   576						MOVE T,[-<RTLSIZ+200>,,XBUF]
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  8-2
	DSKDMP	

   577						SETZM RECORD
   578						PUSHJ P,READ0			;READ RETRIEVAL AND ONE RECORD
   579						MOVE A,XBUF+RTLSIZ+140-74	;GET LOC 140 OF THE DUMP FILE
   580						MOVE B,XBUF+DDLNG		;GET LENGTH OF DUMP FILE
   581					IFN DSKDBG,<
   582						MOVE C,XBUF+RTLSIZ+JOBSYM↑-74	;GET POINTER TO SYMBOL TABLE
   583						ADDI C,-274(A)			;RELOCATE IT
   584						MOVEM C,SYMPNT
   585					>;IFN DSKDBG
   586						MOVE C,XBUF+RTLSIZ+JOBSA↑-74	;GET STARTING ADDRESS
   587						HRRZM C,STARTA
   588						SUBI B,200
   589						MOVEM B,LODCNT		;LENGTH OF REMAINDER OF DUMP FILE
   590						MOVEM A,LODNXT		;STORE ADDRESS TO LOAD INTO
   591						MOVEI B,2
   592						MOVEM B,RECORD		;START AT RECORD 2
   593						MOVE C,[DPTRBP+XBUF]	;set up byte ptr to retr ptrs
   594						MOVEM C,NXTTRK
   595						MOVE T,LODCNT
   596						CAILE T,DATSIZ-200
   597						MOVEI T,DATSIZ-200
   598						JRST BOOTL2
   599					
   600					BOOTL1:	MOVE T,LODCNT
   601						MOVEI N,1
   602						MOVEM N,RECORD
   603					BOOTL2:	ILDB N,NXTTRK
   604						CAILE T,DATSIZ
   605						MOVEI T,DATSIZ
   606						MOVEM T,XFRCNT		;SAVE NUMBER OF WORDS THIS TRANSFER
   607						MOVN T,T		;-NUMBER OF WORDS TO TRANSFER
   608						HRLZ T,T
   609						HRR T,LODNXT		;RH GETS NEXT LOC TO LOAD INTO
   610						PUSHJ P,READ0		;READ REST OF THIS TRACK
   611						MOVE A,XFRCNT
   612						ADDM A,LODNXT
   613						MOVN A,A
   614						ADDB A,LODCNT
   615					IFN DSKDBG,<
   616						JUMPLE A,BOOTL3		;ALL DONE
   617					>;IFN DSKDBG
   618					IFE DSKDBG,<
   619						JUMPLE A,@STARTA	;DONE, TRANSFER TO DSKDMP
   620					>;IFE DSKDBG
   621						MOVE A,NXTTRK
   622						CAME A,[DPTEBP+XBUF]	;JUST DID LAST TRACK IN GROUP?
   623						JRST BOOTL1		;NO, DO NEXT TRACK
   624						MOVE N,XBUF+DNXTGP	;FIRST TRACK OF NEXT GROUP
   625						PUSHJ P,RDRET		;READ RETRIEVAL
   626						MOVE A,[DPTRBP+XBUF]	;set up byte ptr to retr ptrs
   627						MOVEM A,NXTTRK
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  8-3
	DSKDMP	

   628						JRST BOOTL1
   629					
   630					IFN DSKDBG,<
   631					BOOTL3:	SETOM 37
   632						MOVE A,SYMPNT
   633						MOVEM A,36
   634						JRST @STARTA		;JUMP TO STARTING ADDRESS
   635					>;IFN DSKDBG
   636					
   637					NODSKD:
   638					IFE KLBOOT,<
   639					IFE EXTNEW,<	SKIPA B,[[ASCIZ /CAN'T FIND DSKDMP.DMP[SS,SYS]/]] >
   640					IFE EXTNEW-1,<	SKIPA B,[[ASCIZ /CAN'T FIND DSKDMP.NEW[SS,SYS]/]] >
   641					IFE EXTNEW-2,<	SKIPA B,[[ASCIZ /CAN'T FIND DSKDMP.OLD[SS,SYS]/]] >
   642					IFE EXTNEW-3,<	SKIPA B,[[ASCIZ /CAN'T FIND DSKDMP.TST[SS,SYS]/]] >
   643					>;IFE KLBOOT
   644					IFN KLBOOT,<
   645					IFE EXTNEW,<	SKIPA B,[[ASCIZ /DMP?/]] >
   646					IFE EXTNEW-1,<	SKIPA B,[[ASCIZ /NEW?/]] >
   647					IFE EXTNEW-2,<	SKIPA B,[[ASCIZ /OLD?/]] >
   648					IFE EXTNEW-3,<	SKIPA B,[[ASCIZ /TST?/]] >
   649					>;IFN KLBOOT
   650					NOSYS:
   651					IFE KLBOOT,<
   652						MOVEI B,[ASCIZ /CAN'T FIND SSSYS.UFD[1,1]/]
   653					>;IFE KLBOOT
   654					IFN KLBOOT,<
   655						MOVEI B,[ASCIZ /SS,SYS? /]
   656					>;IFN KLBOOT
   657						PUSHJ P,TYPE
   658						JRST 4,.
   659					
   660					IFN RHDSK,<
   661					;Here if FDSK (called as BLAST) failed to find right disk structure.
   662					;Original error message has already been typed out.
   663					NOMFD:
   664					IFE KLBOOT,<
   665						MOVEI B,[ASCIZ/
   666					Type RN to try again, looking for any structure.
   667					/]
   668						PUSHJ P,TYPE
   669					>;IFE KLBOOT
   670						JRST 4,.+1
   671						SETZM FDEV		;set to accept any structure this time
   672						JRST BOOT
   673					>;IFN RHDSK
   674					
   675					>;IFE DSKDSW
   676					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9
	DSKDMP	

   677					;⊗ LOWEST DSKDMP DSKDM0 DSKDM1 DSKDM2 DSKDL DSKDL2 DSKDL1 DSKDRO DSKDAL DSKAL1 
	QQQ DSKDGO CMDS NCMDS CMDDSP SSTRTA SSTRT1 SSTRT2 START LOADGO NOMUCK MERGE LOAD LOADN LOADIT LDIT0 LDIT0A LDIT
	1 LDIT3 LDIT4 LDIT2 LDLP LDLP1 LDLP3 FILES DUMP KILL NSA FNF
   678					
   679					;DSKDMP BEGINS HERE
   680					
   681					IFN DSKDSW,<
   682	       	000000 	760000 		LOWEST←←.
   683	000274 	255000 	000000 		DSKDMP:	JFCL FDZBEG		;start with pointer to data area
	       	000000 	000000 	
   684	000275 	200740 	000000 			MOVE P,[-LPDL,,PDL-1]
   685	000276 	700200 	200000 			CONO APR,200000
   686	000277 	700600 	010000 			CONO PI,10000
   687					IFN KACODE,<
   688						SKPKL
   689						JRST DSKDM1
   690					>;IFN KACODE
   691	000300 	700300 	200000 			CONSZ APR,SWEEPB	;WAIT FOR SWEEP BUSY TO FALL
   692	000301 	254000 	760004 			JRST .-1
   693	000302 	701340 	600000 			CONSO KLPAG,600000	;IS THE CACHE ON ALREADY?
   694	000303 	254000 	000000 			JRST DSKDM0		;NO.
   695	000304 	701500 	000000 			BLKO CCA,		;VALIDATE CORE
   696	000305 	700300 	200000 			CONSZ APR,SWEEPB
   697	000306 	254000 	760011 			JRST .-1
   698					DSKDM0:
   699					IFN RHDSK,<
   700	000307 	402000 	756000 			SETZM KLEPT		;clear the channel logout areas
	       	756000 	756001 	
   701	000310 	200040 	000000 			MOVE A,[KLEPT,,KLEPT+1]
   702	000311 	251040 	000000 			BLT A,KLEPT+MAXCHN*WDPCHN-1 ;clear all channels' logout areas
   703					>;IFN RHDSK
   704	000312 	701200 	000756 			CONO KLPAG,KLEPT⊗-9	;TURN OFF CACHE.  set EPT address.  TURN OFF MA
	P
   705	000313 	701440 	000000 			DATAI CCA,0		;SWEEP CACHE.  INVALIDATE ALL.
   706	000314 	700300 	200000 			CONSZ APR,SWEEPB	;WAIT FOR SWEEP BUSY TO FALL
   707	000315 	254000 	760020 			JRST .-1
   708					
   709					IFN KACODE,<
   710						BLKI APR,A		;GET UCODE OPTIONS INTO BITS 0-8 OF A
   711						TLNN A,100000		;SKIP IF KA SIMULATION UCODE LOADED
   712						JRST DSKDM1
   713						SETOM KASIM
   714						CONO KLPAG,KLEPT⊗-9	;MAKE SURE EPT IS AT right place
   715						MOVEI C,411
   716						PUSHJ P,DTEXX		;TELL KLDCP TO ENTER KASIM MODE
   717					IFN RHDSK,<
   718					PRINTX This can't possibly work, since EPT isn't where RH routines expect it
   719					;and if EPT is at page 1000, we can't address it with straight-thru map.
   720					>;IFN RHDSK
   721						CONO KLPAG,1000		;MOVE EPT TO PAGE 1000
   722						PUSHJ P,BLAST		;init the C1 channel or read the RH home blocks
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-2
	DSKDMP	

   723						JRST DSKDM2
   724					
   725					>;IFN KACODE
   726	000316 	260740 	000000 		DSKDM1:	PUSHJ P,BLAST		;init the C1 channel or read the RH home blocks
   727	000317 	402000 	000000 			SETZM KASIM
   728					IFN KACODE,<
   729						SKPKL
   730						CONO TTY,3600		;CLEAR ALL BUSY AND DONE FLAGS
   731						SKIPN KASIM
   732					>;IFN KACODE
	       	000063 	637163 	
   733	000320 	334100 	000000 			SKIPA B,[SIXBIT /  SSYS/]
	       	000044 	637163 	
   734	000321 	200100 	000000 		DSKDM2:	MOVE B,[SIXBIT /  DSYS/];DIAGNOSTICS LIVE HERE
   735	000322 	202100 	000000 			MOVEM B,DEFPPN
   736	000323 	201000 	000000 			MOVEI F,0
   737						MOVEI B,[ASCIZ /
	       	064250 	451626 	
	       	422332 	000000 	
   738	000324 	201100 	000000 		DSKDMP/]
   739	000325 	260740 	000000 			PUSHJ P,TYPE
   740					IFN KACODE,<
   741						SKIPN KASIM
   742						JRST DSKDL
   743						MOVEI B,[ASCIZ /
   744					KA SIMULATION MICROCODE LOADED
   745					SWITCHES = /]
   746						PUSHJ P,TYPE
   747						DATAI APR,B
   748						PUSHJ P,OCTTYP
   749					>;IFN KACODE
   750					DSKDL:	MOVEI B,[ASCIZ /
	       	064245 	200000 	
   751	000326 	201100 	000000 		*/]
   752	000327 	260740 	000325 			PUSHJ P,TYPE
   753	000330 	620000 	000001 			TRZ F,RBO
   754	000331 	201100 	000000 			MOVEI B,0
	       	010700 	000000 	
   755	000332 	200040 	000000 		DSKDL2:	MOVE A,[010700,,TIBUF-1]
   756	000333 	402000 	000000 			SETZM TIBUF
	       	000000 	000000 	
   757	000334 	200140 	000000 			MOVE C,[TIBUF,,TIBUF+1]
   758	000335 	251140 	000000 			BLT C,TIBUF+TIBFLN-1
   759	000336 	260740 	000000 		DSKDL1:	PUSHJ P,TYI			;GET CHARACTER IN C
   760	000337 	306140 	000177 			CAIN C,177
   761	000340 	254000 	000000 			JRST DSKDRO			;RUBOUT
   762	000341 	622000 	000001 			TRZE F,RBO
   763	       	261740 	000003 			JRST [	PUSH P,C
   764	       	201140 	000134 				MOVEI C,"\"
   765	       	260740 	000000 				PUSHJ P,TYO
   766	       	262740 	000003 				POP P,C
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-3
	DSKDMP	

   767	       	260740 	000000 				PUSHJ P,TYO
   768	       	302140 	000015 				CAIE C,15
   769	       	254000 	760047 				JRST .+1
   770	       	201140 	000012 				MOVEI C,12
   771	       	260740 	000000 				PUSHJ P,TYO
   772	       	201140 	000015 				MOVEI C,15
	       	254000 	760047 	
   773	000342 	254000 	000000 				JRST .+1  ]
   774	000343 	306140 	000015 			CAIN C,15
   775	000344 	254000 	000000 			JRST DSKDGO
   776	000345 	306140 	000033 			CAIN C,33
   777	000346 	254000 	000000 			JRST DSKDAL			;ALT MODE
   778	000347 	306140 	000025 			CAIN C,"U"-100
   779	000350 	254000 	760032 			JRST DSKDL
   780	000351 	136140 	000001 			IDPB C,A
   781	000352 	254000 	760042 			JRST DSKDL1
   782					
	       	010700 	000000 	
   783	000353 	316040 	000000 		DSKDRO:	CAMN A,[010700,,TIBUF-1]
   784	000354 	254000 	760032 			JRST DSKDL
   785	000355 	201140 	000134 			MOVEI C,"\"
   786	000356 	666000 	000001 			TRON F,RBO			;SET RUBOUT FLAG, SKIP IF ALREADY ON
   787	000357 	260740 	000000 			PUSHJ P,TYO
   788	000360 	135140 	000001 			LDB C,A
   789	000361 	260740 	000357 			PUSHJ P,TYO
   790	000362 	201140 	000000 			MOVEI C,0
   791	000363 	137140 	000001 			DPB C,A
	       	070000 	000000 	
   792	000364 	270040 	000000 			ADD A,[070000,,]
   793	000365 	325040 	760042 			JUMPGE A,DSKDL1
	       	430000 	000001 	
   794	000366 	274040 	000000 			SUB A,[430000,,1]
   795	000367 	254000 	760042 			JRST DSKDL1
   796					
	       	350700 	000000 	
   797	000370 	135040 	000000 		DSKDAL:	LDB A,[POINT 7,TIBUF,6]		;GET FIRST CHARACTER
   798	000371 	301040 	000060 			CAIL A,"0"
   799	000372 	303040 	000071 			CAILE A,"9"
   800	000373 	304000 	000000 			CAIA
   801	000374 	254000 	000000 			JRST SSTRTA			;SET STARTING ADDRESS
   802	000375 	200040 	000333 			MOVE A,TIBUF
   803	000376 	205100 	000000 			MOVSI B,-NCMDS
   804	000377 	312042 	000000 		DSKAL1:	CAME A,CMDS(B)
   805	000400 	253100 	760103 			AOBJN B,DSKAL1
   806	000401 	321100 	760036 			JUMPL B,DSKDL2			;JUMP IF FOUND ONE (B REMEMBERS THE COM
	MAND)
   807	000402 	260740 	000000 			PUSHJ P,QQQ
   808	000403 	254000 	760032 			JRST DSKDL
   809					
	       	201007 	737576 	
	       	000000 	000000 	
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-4
	DSKDMP	

   810	000404 	201100 	000000 		QQQ:	MOVEI B,[ASCIZ /  ???/]
   811	000405 	254000 	000327 			JRST TYPE
   812					
   813	000406 	322100 	000000 		DSKDGO:	JUMPE B,LOADGO			;JUST FILE NAME
   814	000407 	254022 	000000 			JRST @CMDDSP(B)			;DISPATCH ON COMMAND
   815					
   816	000410 	460000 	000000 		CMDS:	ASCII /L/			;LOAD
   817	000411 	430000 	000000 			ASCII /F/			;LIST FILES
   818	000412 	420000 	000000 			ASCII /D/			;DUMP
   819	000413 	454000 	000000 			ASCII /K/			;KILL A FILE
   820	000414 	434000 	000000 			ASCII /G/			;START AT STARTING ADDRESS
   821	000415 	464000 	000000 			ASCII /M/			;MERGE (LOAD WITHOUT CLEAR)
   822	000416 	470000 	000000 			ASCII /N/			;LIKE L BUT DOESN'T HACK LOW CORE CELLS
   823	       	000000 	000007 		NCMDS←←.-CMDS
   824					
   825	000417 	000000 	000000 		CMDDSP:	LOAD
   826	000420 	000000 	000000 			FILES
   827	000421 	000000 	000000 			DUMP
   828	000422 	047000 	400056 			KILL
   829	000423 	000000 	000000 			START
   830	000424 	000000 	000000 			MERGE
   831	000425 	000000 	000000 			NOMUCK
   832					
	       	440700 	000000 	
   833	000426 	200040 	000000 		SSTRTA:	MOVE A,[POINT 7,TIBUF]
   834	000427 	201100 	000000 			MOVEI B,0
   835	000430 	134140 	000001 		SSTRT1:	ILDB C,A
   836	000431 	301140 	000060 			CAIL C,"0"
   837	000432 	303140 	000071 			CAILE C,"9"
   838	000433 	254000 	000000 			JRST SSTRT2
   839	000434 	242100 	000003 			LSH B,3
   840	000435 	271103 	777720 			ADDI B,-"0"(C)
   841	000436 	254000 	760134 			JRST SSTRT1
   842					
   843	000437 	202100 	000000 		SSTRT2:	MOVEM B,STARTA
   844	000440 	254000 	760032 			JRST DSKDL
   845					
   846	000441 	260740 	000000 		START:	PUSHJ P,TWAIT			;WAIT FOR TTY TO FINISH
   847	000442 	332000 	000437 			SKIPE STARTA
   848	000443 	254020 	000442 			JRST @STARTA
	       	472364 	051650 	
	       	406452 	444634 	
	       	435010 	142210 	
	       	512132 	351400 	
   849	000444 	201100 	000000 			MOVEI B,[ASCIZ /NO STARTING ADDRESS/]
   850	000445 	260740 	000405 			PUSHJ P,TYPE
   851	000446 	254000 	760032 			JRST DSKDL
   852					
   853	000447 	476000 	000000 		LOADGO:	SETOM ZERFLG
   854	000450 	476000 	000000 			SETOM MUCKFL
   855	000451 	260740 	000000 			PUSHJ P,LOADIT
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-5
	DSKDMP	

   856	000452 	254000 	760032 			 JRST DSKDL			;COULDN'T DO IT
	       	202311 	740610 	
	       	426100 	000000 	
   857	000453 	201100 	000000 			MOVEI B,[ASCIZ / LOADED/]
   858	000454 	260740 	000445 			PUSHJ P,TYPE
   859	000455 	260740 	000441 			PUSHJ P,TWAIT
   860	000456 	332000 	000443 			SKIPE STARTA
   861	000457 	254020 	000456 			JRST @STARTA			;START IT UP
	       	202052 	552100 	
	       	472364 	051650 	
	       	406452 	444634 	
	       	435010 	142210 	
	       	512132 	351400 	
   862	000460 	201100 	000000 			MOVEI B,[ASCIZ / BUT NO STARTING ADDRESS/]
   863	000461 	260740 	000454 			PUSHJ P,TYPE
   864	000462 	254000 	760032 			JRST DSKDL
   865					
   866	000463 	476000 	000447 		NOMUCK:	SETOM ZERFLG
   867	000464 	402000 	000450 			SETZM MUCKFL
   868	000465 	254000 	000000 			JRST LOADN
   869					
   870	000466 	402000 	000463 		MERGE:	SETZM ZERFLG
   871	000467 	476000 	000464 			SETOM MUCKFL
   872	000470 	254000 	000465 			JRST LOADN
   873					
   874	000471 	476000 	000466 		LOAD:	SETOM ZERFLG
   875	000472 	476000 	000467 			SETOM MUCKFL
   876	000473 	260740 	000451 		LOADN:	PUSHJ P,LOADIT
   877	000474 	254000 	760032 			 JRST DSKDL			;COULDN'T DO IT
	       	202311 	740610 	
	       	426100 	000000 	
   878	000475 	201100 	000000 			MOVEI B,[ASCIZ / LOADED/]
   879	000476 	260740 	000461 			PUSHJ P,TYPE
   880	000477 	254000 	760032 			JRST DSKDL
   881					
   882					;SKIP RETURNS IF SUCCESSFUL
   883	000500 	260740 	000000 		LOADIT:	PUSHJ P,FILSET			;SET UP FILE NAME
   884	000501 	336000 	000000 			SKIPN FNAM
   885	000502 	254000 	760110 			JRST QQQ
   886					IFN RHDSK,<
   887	000503 	200040 	000000 			MOVE A,FDEV		;see what structure is requested
   888	000504 	316040 	000000 			CAMN A,STRNAM		;skip if diff structure seen, need to scan disk
   889	000505 	336000 	000000 			SKIPN DIORG		;skip if already have info for this structure
   890	000506 	260740 	000000 			PUSHJ P,FDSK		;find desired structure on the disk
   891	000507 	336600 	000505 			SKIPN N,DIORG		;get location of the MFD
   892	000510 	254000 	760110 			 JRST QQQ		;didn't find MFD, msg already typed, type ???
   893					>;IFN RHDSK
   894					IFE RHDSK,<
   895						MOVEI N,MFDLOC
   896					>;IFE RHDSK
   897	000511 	200040 	000000 			MOVE A,FPPN
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-6
	DSKDMP	

   898	000512 	202040 	000322 			MOVEM A,DEFPPN
   899	000513 	260740 	000000 			PUSHJ P,SRCH
   900	000514 	254000 	000000 			 JRST NSA			;UFD NOT FOUND IN MFD
   901	000515 	200616 	000003 			MOVE N,3(TT)			;DISK ADDRESS OF UFD
   902	000516 	200040 	000501 			MOVE A,FNAM
   903	000517 	510100 	000000 			HLLZ B,FEXT
   904	000520 	260740 	000000 			PUSHJ P,SRCH1
   905	000521 	254000 	000000 			 JRST FNF			;FILE NOT FOUND IN UFD
   906	000522 	200616 	000003 			MOVE N,3(TT)			;DISK ADDRESS OF FILE
   907	000523 	336000 	000471 			SKIPN ZERFLG
   908	000524 	254000 	000000 			JRST LDIT0
   909	000525 	402000 	000040 			SETZM 40
	       	000040 	000041 	
   910	000526 	200040 	000000 			MOVE A,[40,,41]
   911					IFE RHDSK,<
   912						BLT A,DSKDMP-1			;CLEAR CORE UP TO DSKDMP
   913					>;IFE RHDSK
   914					IFN RHDSK,<
   915	000527 	251040 	755777 			BLT A,KLEPT-1			;CLEAR CORE UP TO DSKDMP, preserve EPT
   916					>;IFN RHDSK
	       	777400 	000000 	
   917	000530 	200640 	000000 		LDIT0:	MOVE T,[-<RTLSIZ+200>,,XBUF]
   918	000531 	402000 	000000 			SETZM RECORD
   919	000532 	260740 	000000 			PUSHJ P,READ0			;READ RETRIEVAL AND ONE RECORD
   920	000533 	403140 	000000 			SETZB C,FHILOC
   921	000534 	402000 	000457 			SETZM STARTA
   922	000535 	336000 	000472 			SKIPN MUCKFL			;SKIP IF MUCKING WITH LOW CORE CELLS
   923	000536 	254000 	000000 			JRST LDIT0A
   924	000537 	200140 	000000 			MOVE C,XBUF+RTLSIZ+JOBSYM↑-74	;GET POINTER TO SYMBOL TABLE
   925	000540 	202140 	000000 			MOVEM C,SYMPNT			;SAVE FOR LATER
   926	000541 	200140 	000000 			MOVE C,XBUF+RTLSIZ+JOBSA↑-74	;GET STARTING ADDRESS
   927	000542 	552140 	000534 			HRRZM C,STARTA
   928	000543 	200140 	000000 			MOVE C,XBUF+RTLSIZ+HILOC↑-74	;ADDRESS OF BEGINNING OF UPPER
   929	000544 	202140 	000533 			MOVEM C,FHILOC
   930	000545 	200100 	000000 		LDIT0A:	MOVE B,XBUF+DDLNG		;GET LENGTH OF DUMP FILE
   931	000546 	322140 	000000 			JUMPE C,LDIT1			;NO UPPER
   932	000547 	201103 	777704 			MOVEI B,-74(C)			;FILE SIZE OF LOWER
   933	000550 	275140 	000001 			SUBI C,1
   934	000551 	435140 	001777 			IORI C,1777			;LAST ADDRESS OF LOWER
   935	000552 	305140 	377777 			CAIGE C,377777
   936	000553 	201140 	377777 			MOVEI C,377777
   937	000554 	271140 	000001 			ADDI C,1
   938	000555 	202140 	000000 			MOVEM C,UPPRST			;UPPER STARTS HERE
   939	000556 	202100 	000000 		LDIT1:	MOVEM B,LODCNT
   940	000557 	201040 	000074 			MOVEI A,74
   941	000560 	202040 	000000 			MOVEM A,LODNXT			;STORE ADDRESS TO LOAD INTO
   942	000561 	260740 	000000 			PUSHJ P,LDLP			;LOAD THE LOWER
   943	000562 	336140 	000544 			SKIPN C,FHILOC			;SKIP IF THERE IS AN UPPER
   944	000563 	254000 	000000 			JRST LDIT2			;NO UPPER
   945	000564 	200100 	000545 			MOVE B,XBUF+DDLNG
   946	000565 	275103 	777704 			SUBI B,-74(C)			;COMPUTE SIZE OF UPPER
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-7
	DSKDMP	

   947	000566 	202100 	000556 			MOVEM B,LODCNT
   948	000567 	200100 	000555 			MOVE B,UPPRST
   949	000570 	202100 	000560 			MOVEM B,LODNXT			;STARTING CORE ADDRESS OF UPPER
   950	000571 	200040 	000531 			MOVE A,RECORD			;NEXT RECORD TO READ IS FIRST REC OF UP
	PER
   951	000572 	306040 	000011 			CAIN A,DATRPB+1
   952	000573 	254000 	000000 			JRST LDIT3			;UPPER BEGINS ON A TRACK BOUNDARY
   953	000574 	210640 	000001 			MOVN T,A
   954	000575 	271640 	000011 			ADDI T,DATRPB+1			;NUMBER OF RECORDS LEFT IN TRACK
   955	000576 	221640 	000200 			IMULI T,200			;NUMBER OF WORDS LEFT IN TRACK
   956	000577 	313640 	000566 			CAMLE T,LODCNT
   957	000600 	200640 	000577 			MOVE T,LODCNT
   958	000601 	135600 	000000 			LDB N,NXTTRK
   959	000602 	260740 	000000 			PUSHJ P,LDLP3
   960	000603 	254000 	000563 			JRST LDIT2
   961					
   962	000604 	200040 	000601 		LDIT3:	MOVE A,NXTTRK
	       	000000 	000000 	
   963	000605 	312040 	000000 			CAME A,[DPTEBP+XBUF]	;JUST DID LAST TRACK IN GROUP?
   964	000606 	254000 	000000 			JRST LDIT4
   965	000607 	200600 	000000 			MOVE N,XBUF+DNXTGP
   966	000610 	260740 	000000 			PUSHJ P,RDRET			;READ RETRIEVAL OF NEXT GROUP
	       	000000 	000000 	
   967	000611 	200040 	000000 			MOVE A,[DPTRBP+XBUF]		;set up byte ptr to retr ptrs
   968	000612 	202040 	000604 			MOVEM A,NXTTRK
   969	000613 	260740 	000000 		LDIT4:	PUSHJ P,LDLP1			;LOAD THE UPPER
   970	000614 	201040 	777777 		LDIT2:	MOVEI A,-1
   971	000615 	202040 	000037 			MOVEM A,37
   972	000616 	200040 	000540 			MOVE A,SYMPNT
   973					IFN KACODE,<
   974						SKIPE KASIM
   975						MOVEI A,116			;PDP-6 DDT EXPECTS 36 TO POINT TO SYM P
	TR
   976					>;IFN KACODE
   977	000617 	202040 	000036 			MOVEM A,36
   978	000620 	254000 	000000 			JRST CPOPJ1
   979					
   980					;SET LODNXT TO FIRST LOCATION TO LOAD INTO, LODCNT TO NUMBER OF WORDS TO TRANSF
	ER
   981					;STARTS READING AT THE BEGINNING OF THE GROUP WHOSE RETRIEVAL IS IN XBUF
	       	000000 	000000 	
   982	000621 	200140 	000000 		LDLP:	MOVE C,[DPTRBP+XBUF]		;set up byte ptr to retr ptrs
   983	000622 	202140 	000612 			MOVEM C,NXTTRK
   984	000623 	200640 	000600 		LDLP1:	MOVE T,LODCNT
   985	000624 	201600 	000001 			MOVEI N,1
   986	000625 	202600 	000571 			MOVEM N,RECORD
   987	000626 	134600 	000622 			ILDB N,NXTTRK
   988	000627 	303640 	002000 		LDLP3:	CAILE T,DATSIZ
   989	000630 	201640 	002000 			MOVEI T,DATSIZ
   990	000631 	202640 	000000 			MOVEM T,XFRCNT			;SAVE NUMBER OF WORDS THIS TRANSFER
   991	000632 	210640 	000015 			MOVN T,T			;-NUMBER OF WORDS TO TRANSFER
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-8
	DSKDMP	

   992	000633 	514640 	000015 			HRLZ T,T
   993	000634 	540640 	000570 			HRR T,LODNXT			;RH GETS NEXT LOC TO LOAD INTO
   994	000635 	260740 	000532 			PUSHJ P,READ0			;READ THE TRACK
   995	000636 	200040 	000631 			MOVE A,XFRCNT
   996	000637 	272040 	000634 			ADDM A,LODNXT
   997	000640 	210040 	000001 			MOVN A,A
   998	000641 	273040 	000623 			ADDB A,LODCNT
   999	000642 	323040 	000000 			JUMPLE A,CPOPJ			;DONE
  1000	000643 	200040 	000626 			MOVE A,NXTTRK
	       	000000 	000000 	
  1001	000644 	312040 	000000 			CAME A,[DPTEBP+XBUF]	;JUST DID LAST TRACK IN GROUP?
  1002	000645 	254000 	760327 			JRST LDLP1			;NO, DO NEXT TRACK
  1003	000646 	200600 	000607 			MOVE N,XBUF+DNXTGP		;FIRST TRACK OF NEXT GROUP
  1004	000647 	260740 	000610 			PUSHJ P,RDRET			;READ RETRIEVAL
  1005	000650 	254000 	760325 			JRST LDLP
  1006					
	       	432231 	442646 	
	       	202071 	746632 	
	       	406350 	420234 	
	       	476504 	044632 	
	       	502310 	546612 	
	       	472510 	542100 	
	       	546132 	400000 	
  1007	000651 	201100 	000000 		FILES:	MOVEI B,[ASCIZ /FILES COMMAND NOT IMPLEMENTED YET/]
  1008	000652 	260740 	000476 			PUSHJ P,TYPE
  1009	000653 	254000 	760032 			JRST DSKDL
  1010					
	       	422531 	550100 	
	       	416371 	546602 	
	       	472104 	047236 	
	       	521011 	146640 	
	       	462131 	542634 	
	       	522130 	420262 	
	       	426500 	000000 	
  1011	000654 	201100 	000000 		DUMP:	MOVEI B,[ASCIZ /DUMP COMMAND NOT IMPLEMENTED YET/]
  1012	000655 	260740 	000652 			PUSHJ P,TYPE
  1013	000656 	254000 	760032 			JRST DSKDL
  1014					
	       	456231 	446100 	
	       	416371 	546602 	
	       	472104 	047236 	
	       	521011 	146640 	
	       	462131 	542634 	
	       	522130 	420262 	
	       	426500 	000000 	
  1015	000657 	201100 	000000 		KILL:	MOVEI B,[ASCIZ /KILL COMMAND NOT IMPLEMENTED YET/]
  1016	000660 	260740 	000655 			PUSHJ P,TYPE
  1017	000661 	254000 	760032 			JRST DSKDL
  1018					
	       	472364 	051652 	
	       	416204 	040644 	
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  9-9
	DSKDMP	

	       	426024 	026500 	
	       	000000 	000000 	
  1019	000662 	201100 	000000 		NSA:	MOVEI B,[ASCIZ /NO SUCH AREA - /]
  1020	000663 	260740 	000660 			PUSHJ P,TYPE
  1021	000664 	254000 	000000 			JRST PPNTYP
  1022					
	       	472364 	051652 	
	       	416204 	043222 	
	       	462124 	026500 	
	       	000000 	000000 	
  1023	000665 	201100 	000000 		FNF:	MOVEI B,[ASCIZ /NO SUCH FILE - /]
  1024	000666 	260740 	000663 			PUSHJ P,TYPE
  1025	000667 	254000 	000000 			JRST FILTYP
  1026					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  10
	DSKDMP	

  1027					;⊗ FILSET FILSE0 FILSE1 FILSIX FILSI1 RADJ RADJ1
  1028					
  1029					;SCAN TIBUF AND SET UP FILE NAME, EXTENSION AND PPN
  1030					FILSET:
  1031					IFN RHDSK,<
  1032	000670 	200100 	000000 			MOVE B,DEFDEV		;set up default structure name (device)
  1033	000671 	202100 	000503 			MOVEM B,FDEV
  1034					>;IFN RHDSK
  1035	000672 	200100 	000512 			MOVE B,DEFPPN
  1036	000673 	202100 	000511 			MOVEM B,FPPN
  1037	000674 	200100 	000000 			MOVE B,DEFEXT
  1038	000675 	202100 	000517 			MOVEM B,FEXT
  1039	000676 	402000 	000516 			SETZM FNAM
  1040	000677 	402000 	000000 			SETZM FEXT+1
	       	010700 	000000 	
  1041	000700 	200040 	000000 			MOVE A,[010700,,TIBUF-1]
  1042	000701 	260740 	000000 			PUSHJ P,FILSIX
  1043					IFN RHDSK,<
  1044	000702 	302200 	000072 			CAIE D,":"		;device given?
  1045	000703 	254000 	000000 			JRST FILSE0		;no, must be filename
  1046	000704 	202100 	000671 			MOVEM B,FDEV		;yes, store device name
  1047	000705 	260740 	000701 			PUSHJ P,FILSIX		;now read filename
  1048					FILSE0:
  1049					>;IFN RHDSK
  1050	000706 	202100 	000676 			MOVEM B,FNAM
  1051	000707 	302200 	000056 			CAIE D,"."
  1052	000710 	254000 	000000 			JRST FILSE1
  1053	000711 	260740 	000705 			PUSHJ P,FILSIX
  1054	000712 	512100 	000675 			HLLZM B,FEXT
  1055	000713 	302200 	000133 		FILSE1:	CAIE D,"["
  1056	000714 	263740 	000000 			POPJ P,
  1057	000715 	260740 	000711 			PUSHJ P,FILSIX
  1058	000716 	260740 	000000 			PUSHJ P,RADJ
  1059	000717 	502100 	000673 			HLLM B,FPPN
  1060	000720 	302200 	000054 			CAIE D,","
  1061	000721 	263740 	000000 			POPJ P,
  1062	000722 	260740 	000715 			PUSHJ P,FILSIX
  1063	000723 	260740 	000716 			PUSHJ P,RADJ
  1064	000724 	546100 	000717 			HLRM B,FPPN
  1065	000725 	263740 	000000 			POPJ P,
  1066					
  1067	000726 	201100 	000000 		FILSIX:	MOVEI B,0
	       	440600 	000002 	
  1068	000727 	200140 	000000 			MOVE C,[440600,,B]
  1069	000730 	134200 	000001 		FILSI1:	ILDB D,A		;GET NEXT CHARACTER FROM BUFFER
  1070	000731 	302200 	000056 			CAIE D,"."
  1071	000732 	306200 	000133 			CAIN D,"["
  1072	000733 	263740 	000000 			POPJ P,
  1073	000734 	302200 	000054 			CAIE D,","
  1074	000735 	306200 	000135 			CAIN D,"]"
  1075	000736 	263740 	000000 			POPJ P,
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  10-2
	DSKDMP	

  1076					IFN RHDSK,<
  1077	000737 	306200 	000072 			CAIN D,":"		;see structure name?
  1078	000740 	263740 	000000 			POPJ P,			;yes
  1079					>;IFN RHDSK
  1080	000741 	322200 	000642 			JUMPE D,CPOPJ
  1081	000742 	275200 	000040 			SUBI D,40
  1082	000743 	603140 	770000 			TLNE C,770000
  1083	000744 	136200 	000003 			IDPB D,C
  1084	000745 	254000 	760434 			JRST FILSI1
  1085					
  1086	000746 	322100 	000741 		RADJ:	JUMPE B,CPOPJ
  1087	000747 	603100 	000077 		RADJ1:	TLNE B,77
  1088	000750 	263740 	000000 			POPJ P,
  1089	000751 	242100 	777772 			LSH B,-6
  1090	000752 	254000 	760453 			JRST RADJ1
  1091					>;IFN DSKDSW
  1092					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  11
	DSKDMP	

  1093					;⊗ SRCH SRCH1 SRCH2 SRCH3 SRCHLP SRCH5 SRCH4 RDRET READ READ0 READC1 C1WAIT C1W
	AIA C1WAIB C1WERR C1DIE C1MPIL C1MPI1 C1SET BLAST RSTC1
  1094					
  1095					;SRCH IS GIVEN A FILENAME IN A AND A block IN N.
  1096					;SRCH1 IS GIVEN A FILENAME IN A, AN EXTENSION IN B AND A block IN N
  1097	000753 	205100 	654644 		SRCH:	MOVSI B,'UFD'
  1098	000754 	260740 	000000 		SRCH1:	PUSHJ P,READ		;READ block N INTO XBUF
  1099	000755 	336640 	000564 			SKIPN T,DDLNG+XBUF	;GET FILE LENGTH
  1100	000756 	263740 	000000 			POPJ P,
	       	000000 	000000 	
  1101	000757 	200700 	000000 			MOVE TT,[DPTRBP+XBUF]	;set up byte ptr to get retr ptrs
  1102	000760 	133000 	000016 			IBP TT			;prepare to get second retr ptr (skip first)
  1103	000761 	202700 	000643 			MOVEM TT,NXTTRK
	       	776000 	000000 	
  1104	000762 	200700 	000000 		SRCH2:	MOVE TT,[-DATSIZ,,XBUF+RTLSIZ] ;scan block starting beyond retrieval
  1105	000763 	510156 	000001 		SRCH3:	HLLZ C,1(TT)		;get file extension
  1106	000764 	316056 	000000 			CAMN A,(TT)
  1107	000765 	312100 	000003 			CAME B,C
  1108	000766 	254000 	000000 			JRST SRCHLP		;not the file we want
  1109	000767 	254000 	000620 			JRST CPOPJ1		;RETURN WITH POINTER IN TT
  1110					
  1111	000770 	275640 	000020 		SRCHLP:	SUBI T,NUFDWD		;one less UFD entry left
  1112	000771 	323640 	000746 			JUMPLE T,CPOPJ		;jump if no more data in UFD, file not found
	       	000017 	000017 	
  1113	000772 	270700 	000000 			ADD TT,[NUFDWD-1,,NUFDWD-1] ;advance to next UFD entry
  1114	000773 	253700 	760467 			AOBJN TT,SRCH3		;jump if more UFD entries
  1115	000774 	200700 	000761 			MOVE TT,NXTTRK		;get byte ptr to next block
	       	000000 	000000 	
  1116	000775 	316700 	000000 			CAMN TT,[DPTEBP+XBUF]	;JUST DID LAST block IN GROUP?
  1117	000776 	254000 	000000 			JRST SRCH4		;YES, get next group
  1118	000777 	134600 	000774 			ILDB N,NXTTRK		;no, get next block within group
  1119	001000 	261740 	000015 		SRCH5:	PUSH P,T		;SAVE COUNT OF WORDS LEFT TO SEARCH
  1120	001001 	260740 	000754 			PUSHJ P,READ		;READ IN THE NEXT block
  1121	001002 	262740 	000015 			POP P,T
  1122	001003 	254000 	760466 			JRST SRCH2		;go search the new block
  1123					
  1124	001004 	200600 	000646 		SRCH4:	MOVE N,DNXTGP+XBUF	;NUMBER OF FIRST block of NEXT GROUP
	       	000000 	000000 	
  1125	001005 	200700 	000000 			MOVE TT,[DPTRBP+XBUF]	;set up byte ptr to get retr ptrs
  1126	001006 	133000 	000016 			IBP TT			;prepare to get second retr ptr (skip first)
  1127	001007 	202700 	000777 			MOVEM TT,NXTTRK
  1128	001010 	254000 	760504 			JRST SRCH5
  1129					
  1130					;RDRET READS RETRIEVAL OF block WHOSE ADDRESS IS IN N
  1131					;READ READS ENTIRE block WHOSE ADDRESS IS IN N
	       	777600 	000000 	
  1132	001011 	334640 	000000 		RDRET:	SKIPA T,[-RTLSIZ,,XBUF]	;read retrieval only into this buffer
	       	775600 	000000 	
  1133	001012 	200640 	000000 		READ:	MOVE T,[-BLKSIZ,,XBUF]	;read whole block into this buffer
  1134	001013 	402000 	000625 			SETZM RECORD		;START READING AT RECORD ZERO within block
  1135					READ0:
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  11-2
	DSKDMP	

  1136					IFN RHDSK,<
  1137	001014 	201715 	000000 			MOVEI TT,(T)		;memory address of transfer
	       	002600 	000000 	
  1138	001015 	137700 	000000 			DPB TT,[POINT 22,ICCW,35] ;store physical address (same as virtual addr
	)
  1139	001016 	574700 	000015 			HLRE TT,T		;get negative word count
  1140	001017 	210700 	000016 			MOVN TT,TT		;positive word count
  1141	001020 	303700 	003777 			CAILE TT,3777		;max word count for one CCW
  1142	001021 	254200 	760525 			JRST 4,.		;word count wouldn't have fit in CCW
	       	261300 	000000 	
  1143	001022 	137700 	000000 			DPB TT,[POINT 11,ICCW,13] ;store word count for channel
  1144	001023 	200640 	000014 			MOVE T,N		;get record number of transfer
  1145	001024 	270640 	001013 			ADD T,RECORD		;add in record offset within WAITS block
  1146	001025 	230640 	000000 			IDIV T,HOMSIZ		;record number within unit to TT, logical unit 
	to T
  1147	001026 	313640 	000000 			CAMLE T,MAXUNI		;make sure valid unit number
  1148	001027 	254200 	760533 			JRST 4,.		;unit number out of range
	       	222115 	000000 	
  1149	001030 	135240 	000000 			LDB P1,[POINT 17,DSKTAB(T),17] ;get physical channel number for log. un
	it
  1150	001031 	550315 	000000 			HRRZ P2,DSKTAB(T)	;get physical drive number of logical unit
  1151	001032 	200640 	000016 			MOVE T,TT		;record nbr within unit
  1152	001033 	230640 	000000 			IDIV T,NUMSCL		;rec nbr within cyl to TT, cyl to T
  1153	001034 	261740 	000015 			PUSH P,T		;save cyl
  1154	001035 	200640 	000016 			MOVE T,TT		;rec nbr within cyl
  1155	001036 	230640 	000000 			IDIV T,NUMSTK		;sector within track to TT, track to T
  1156	001037 	200400 	000016 			MOVE P4,TT		;sector in low bits
  1157	001040 	242640 	000010 			LSH T,=35-=27		;move track (head) number to end in bit 27
  1158	001041 	434400 	000015 			IOR P4,T		;combine head and sector
	       	000000 	000000 	
  1159	001042 	434400 	000000 			IOR P4,[.RHSBR!LR]	;For RH20 SBAR
  1160	001043 	262740 	000011 			POP P,T1		;get back cyl
  1161	001044 	254000 	000000 			JRST RDDISK		;tell the channel to do the transfer
  1162					>;IFN RHDSK
  1163					IFE RHDSK,<
  1164					READC1:	PUSHJ P,C1MPIL			;HERE WITH WCMA IN T, COMPILE INTO MRT 
	INST
  1165						PUSH P,T			;SAVE RECORD NUMBER RETURNED BY C1MPIL
  1166						SETZM C1ERR			;CLEAR ERROR COUNT
  1167						PUSH P,N+1		;save AC N+1
  1168						IDIVI N,TRKPK			;N←PACK, N+1←TRACK ON PACK
  1169						EXCH N+1,(P)		;restore N+1, save track on pack
  1170						POP P,T			;T←track on pack
  1171						IDIVI T,TRKCYL			;T←CYLINDER, TT←HEAD
  1172						DPB T,[POINT 16,C1CCHR,15]	;C C
  1173						DPB TT,[POINT 8,C1CCHR,23]	;H
  1174						MOVE TT,RECORD
  1175						POP P,RECORD
  1176						DPB TT,[POINT 8,C1CCHR,31]	;R
  1177						MOVE TT,C1WCHN(N)		;GET CHANNEL NUMBER
  1178						DPB N,[POINT 4,@C1PPTP(TT),12]	;STORE DISK DRIVE ADDRESS
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  11-3
	DSKDMP	

  1179						MOVEI N,4
  1180						DPB N,[POINT 5,@C1PPTP(TT),4]	;STORE START CODE
  1181					C1WAIT:	JUMPN TT,C1WAIB
  1182						CONSO C1A,CIF
  1183						JRST .-1
  1184						MOVEI T,0
  1185						EXCH T,C1APT+C1ISW
  1186					C1WAIA:	TLC T,200000
  1187						TLNE T,600000
  1188						JRST C1WERR
  1189						MOVE T,C1PH+C1STA		;STATUS A WORD
  1190						TRNN T,C1HLT
  1191						JRST C1WERR
  1192						XCT C1CIFI(TT)			;CLEAR INT FLAG
  1193						POPJ P,
  1194					
  1195					C1WAIB:	CONSO C1B,CIF
  1196						JRST .-1
  1197						MOVEI T,0
  1198						EXCH T,C1BPT+C1ISW
  1199						JRST C1WAIA
  1200					
  1201					C1WERR:	AOS T,C1ERR
  1202						CAIL T,=10
  1203						JRST C1DIE
  1204						PUSHJ P,BLAST			;re-initialize the C1 channel
  1205						MOVEI T,4
  1206						DPB T,[POINT 5,@C1PPTP(TT),4]		;START C1 AGAIN
  1207						JRST C1WAIT
  1208					
  1209					C1DIE:	MOVEI B,[ASCIZ /C1 ERRORS
  1210					/]
  1211						PUSHJ P,TYPE
  1212						JRST 4,.
  1213					
  1214					
  1215					C1MPIL:	PUSH P,A			;HERE WITH WCMA IN T, 1ST RECORD # IN R
	ECORD
  1216						PUSH P,B
  1217						PUSH P,C
  1218						MOVE A,[-=21,,C1MRTD-1]		;PUSH DOWN POINTER FOR DATA POINTERS
  1219						MOVE B,RECORD
  1220					C1MPI1:	HRLZ C,RCLTAB(B)		;GET SIZE OF RECORD
  1221						LSH C,4
  1222						HRR C,T
  1223						TLO C,600000			;MARK AS DATA PNTR AND 1ST OF THE RECOR
	D
  1224						PUSH A,C
  1225						ADD T,RCLTAB(B)
  1226						ADDI B,1			;ADVANCE RECORD NUMBER
  1227						JUMPL T,C1MPI1
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  11-4
	DSKDMP	

  1228						MOVE T,B			;RETURN NEXT RECORD NUMBER IN T
  1229						PUSH A,[0]
  1230						POP P,C
  1231						POP P,B
  1232						POP P,A
  1233						POPJ P,
  1234					
  1235					C1SET:	SETZM C1ZERO
  1236						MOVE A,[C1ZERO,,C1ZERO+1]
  1237						BLT A,C1ZEND-1
  1238						MOVEI A,253
  1239						MOVEM A,C1APT+C1CCW
  1240						MOVEM A,C1BPT+C1CCW
  1241						MOVEI A,C1BW				;BUSY WAIT BIT
  1242						MOVEM A,C1PH
  1243						MOVE A,[C1JMP,,C1MRTC]
  1244						MOVEM A,C1PH+C1INST
  1245						MOVE A,[<BYTE (5)37 (8)CUADR⊗4>!C1PH]
  1246						MOVEM A,C1APT+C1PPTR
  1247						MOVE A,[<BYTE (5)37 (8)<CUADR+1>⊗4>!C1PH]
  1248						MOVEM A,C1BPT+C1PPTR
  1249						POPJ P,
  1250					
  1251					;See FDSK for the IFN RHDSK version of BLAST; this is the IFE RHDSK version.
  1252					BLAST:
  1253					;RESET C1 CHANNELS
  1254					RSTC1:	AOSN C1FRST
  1255						PUSHJ P,C1SET				;SET UP C1 DATA AREAS ONCE ONLY
  1256						CONO C1A,C1SBI!C1RSI!C1SRUN!C1CONT	;RESET ALL CHANNELS START CLOCK
  1257						CONO C1A,C1SCH!C1RST!C1MPCN		;RESET CHAN A AND START UP
  1258						CONO C1B,C1SCH!C1RST!C1MPCN		;RESET CHAN B AND START UP
  1259						CONO C1A,C1SCH!C1SCF1!C1LCD!C1SYSR	;TELL C1A TO DO A SYSTEM RESET
  1260						MOVEI A,100000
  1261						CONSZ C1A,CF1				;WAIT FOR IT TO DROP CF1
  1262						SOJG A,.-1
  1263						CONO C1B,C1SCH!C1SCF1!C1LCD!C1SYSR	;TELL C1B TOO
  1264						MOVEI A,100000
  1265						CONSZ C1B,CF1
  1266						SOJG A,.-1
  1267						CONO C1A,C1SCH!C1SCF1!C1LCD!C1LPT	;INT THE CHANNEL FOR LD ...
  1268						CONO C1B,C1SCH!C1SCF1!C1LCD!C1LPT	;...PGM TABLE.
  1269						MOVEI A,100000
  1270						CONSO C1A,CF2			;WAIT FOR CHANNEL TO BE READY FOR PGM T
	BL
  1271						SOJG A,.-1
  1272						DATAO C1A,C1PTP			;TELL IT WHERE THE PROGRAM TABLE IS
  1273						CONO C1A,C1SCH!C1CCF1		;CLEAR CF1 (TELL IT WE'VE TOLD IT)
  1274						MOVEI A,100000
  1275						CONSZ C1A,CF2			;WAIT FOR CHANNEL TO DROP CF2
  1276						SOJG A,.-1
  1277						MOVEI A,100000
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  11-5
	DSKDMP	

  1278						CONSO C1B,CF2			;REPEAT FOR SECOND CHANNEL
  1279						SOJG A,.-1
  1280						DATAO C1B,C1PTP+1
  1281						CONO C1B,C1SCH!C1CCF1
  1282						MOVEI A,100000
  1283						CONSZ C1B,CF2
  1284						SOJG A,.-1
  1285						POPJ P,
  1286					>;IFE RHDSK
  1287					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  12
	DSKDMP	

  1288					;⊗ TYPE TYPE1 TYO CPOPJ1 CPOPJ DTEXX KLTYO KLTYI TYI KLTYI1 POPCJ TYICAN FILTYP
	 PPNTYP TYPSIX TYPSI1 TWAIT OCTTYP OCTTY1
  1289					
  1290	001045 	505100 	440700 		TYPE:	HRLI B,440700
  1291	001046 	134140 	000002 		TYPE1:	ILDB C,B
  1292	001047 	322140 	000771 			JUMPE C,CPOPJ
  1293	001050 	260740 	000361 			PUSHJ P,TYO
  1294	001051 	254000 	760552 			JRST TYPE1
  1295					
  1296	001052 	261740 	000003 		TYO:	PUSH P,C
  1297	001053 	306140 	000033 			CAIN C,33
  1298	001054 	201140 	000044 			MOVEI C,"$"
  1299					IFN KACODE,<
  1300						SKPKA
  1301						SKIPE KASIM
  1302						CAIA
  1303					>;IFN KACODE
  1304	001055 	254000 	000000 			JRST KLTYO
  1305					IFN KACODE,<
  1306						CONSZ TTY,20
  1307						JRST .-1
  1308						DATAO TTY,C
  1309						POP P,C
  1310						POPJ P,
  1311					>;IFN KACODE
  1312					
  1313	001056 	350017 	000000 		CPOPJ1:	AOS (P)
  1314	001057 	263740 	000000 		CPOPJ:	POPJ P,
  1315					
  1316					
  1317	001060 	202140 	756451 		DTEXX:	MOVEM C,KLEPT+DTCMD
  1318	001061 	402000 	756444 			SETZM KLEPT+DTFLG		;CLEAR 11'S RESPONSE FLAG
  1319	001062 	720200 	020000 			CONO DTE0,DONG11		;RING FOR 11
  1320	001063 	336000 	756444 			SKIPN KLEPT+DTFLG		;WAIT FOR RESPONSE
  1321	001064 	254000 	760567 			JRST .-1
  1322	001065 	200140 	756450 			MOVE C,KLEPT+DTF11		;GET 11'S RESPONSE WORD
  1323	001066 	263740 	000000 			POPJ P,
  1324					
  1325	001067 	405140 	000177 		KLTYO:	ANDI C,177
  1326	001070 	260740 	760564 			PUSHJ P,DTEXX
  1327	001071 	262740 	000003 			POP P,C
  1328	001072 	263740 	000000 			POPJ P,
  1329					
  1330					IFN DSKDSW,<
  1331					
  1332	001073 	201140 	003400 		KLTYI:	MOVEI C,3400
  1333	001074 	260740 	760564 			PUSHJ P,DTEXX
  1334	001075 	322140 	760577 			JUMPE C,KLTYI
  1335	001076 	254000 	000000 			JRST KLTYI1
  1336					
  1337					TYI:
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  12-2
	DSKDMP	

  1338					IFN KACODE,<
  1339						SKPKA
  1340						SKIPE KASIM
  1341						CAIA
  1342					>;IFN KACODE
  1343	001077 	254000 	760577 			JRST KLTYI
  1344					IFN KACODE,<
  1345						CONSO TTY,40
  1346						JRST .-1
  1347						DATAI TTY,C
  1348					>;IFN KACODE
  1349	001100 	405140 	000177 		KLTYI1:	ANDI C,177			;FLUSH PARITY BIT
  1350	001101 	301140 	000141 			CAIL C,"a"
  1351	001102 	303140 	000172 			CAILE C,"z"
  1352	001103 	304000 	000000 			CAIA
  1353	001104 	275140 	000040 			SUBI C,40
  1354	001105 	302140 	000176 			CAIE C,176
  1355	001106 	306140 	000175 			CAIN C,175
  1356	001107 	201140 	000033 			MOVEI C,33
  1357	001110 	306140 	000012 			CAIN C,12
  1358	001111 	201140 	000015 			MOVEI C,15
  1359	001112 	306140 	000025 			CAIN C,"U"-100
  1360	001113 	254000 	000000 			JRST TYICAN
  1361	001114 	602000 	000001 			TRNE F,RBO			;SKIP UNLESS RUBBING OUT
  1362	001115 	263740 	000000 			POPJ P,				;DON'T ECHO HERE IF RUBBING OUT
  1363	001116 	261740 	000003 			PUSH P,C
  1364	001117 	260740 	760556 			PUSHJ P,TYO
  1365	001120 	302140 	000015 			CAIE C,15
  1366	001121 	254000 	000000 			JRST POPCJ
  1367	001122 	201140 	000012 			MOVEI C,12
  1368	001123 	260740 	760556 			PUSHJ P,TYO
  1369	001124 	262740 	000003 		POPCJ:	POP P,C
  1370	001125 	263740 	000000 			POPJ P,
  1371					
  1372	001126 	201140 	000136 		TYICAN:	MOVEI C,"↑"
  1373	001127 	260740 	760556 			PUSHJ P,TYO
  1374	001130 	201140 	000125 			MOVEI C,"U"
  1375	001131 	260740 	760556 			PUSHJ P,TYO
  1376	001132 	201140 	000025 			MOVEI C,"U"-100
  1377	001133 	620000 	000001 			TRZ F,RBO
  1378	001134 	263740 	000000 			POPJ P,
  1379					
  1380					FILTYP:
  1381					IFN RHDSK,<
  1382	001135 	200200 	000704 			MOVE D,FDEV
  1383	001136 	260740 	000000 			PUSHJ P,TYPSIX
  1384	001137 	201140 	000072 			MOVEI C,":"
  1385	001140 	260740 	760556 			PUSHJ P,TYO
  1386					>;IFN RHDSK
  1387	001141 	200200 	000706 			MOVE D,FNAM
  1388	001142 	260740 	001136 			PUSHJ P,TYPSIX
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  12-3
	DSKDMP	

  1389	001143 	201140 	000056 			MOVEI C,"."
  1390	001144 	336200 	000712 			SKIPN D,FEXT
  1391	001145 	254000 	000664 			JRST PPNTYP
  1392	001146 	260740 	760556 			PUSHJ P,TYO
  1393	001147 	260740 	001142 			PUSHJ P,TYPSIX
  1394	001150 	201140 	000133 		PPNTYP:	MOVEI C,"["
  1395	001151 	260740 	760556 			PUSHJ P,TYO
  1396	001152 	510200 	000724 			HLLZ D,FPPN
  1397	001153 	260740 	001147 			PUSHJ P,TYPSIX
  1398	001154 	201140 	000054 			MOVEI C,","
  1399	001155 	260740 	760556 			PUSHJ P,TYO
  1400	001156 	514200 	001152 			HRLZ D,FPPN
  1401	001157 	260740 	001153 			PUSHJ P,TYPSIX
  1402	001160 	201140 	000135 			MOVEI C,"]"
  1403	001161 	254000 	760556 			JRST TYO
  1404					
  1405	001162 	201140 	000000 		TYPSIX:	MOVEI C,0
  1406	001163 	246140 	000006 			LSHC C,6
  1407	001164 	322140 	000000 			JUMPE C,TYPSI1
  1408	001165 	271140 	000040 			ADDI C,40
  1409	001166 	260740 	760556 			PUSHJ P,TYO
  1410	001167 	326200 	760666 		TYPSI1:	JUMPN D,TYPSIX
  1411	001170 	263740 	000000 			POPJ P,
  1412					
  1413					TWAIT:
  1414					IFN KACODE,<
  1415						SKPKA
  1416						SKIPE KASIM
  1417						CAIA
  1418						POPJ P,
  1419						CONSZ TTY,20
  1420						JRST TWAIT
  1421					>;IFN KACODE
  1422	001171 	263740 	000000 			POPJ P,
  1423					
  1424	001172 	231100 	000010 		OCTTYP:	IDIVI B,10
  1425	001173 	322100 	000000 			JUMPE B,OCTTY1
  1426	001174 	506157 	000000 			HRLM C,(P)
  1427	001175 	260740 	760676 			PUSHJ P,OCTTYP
  1428	001176 	554157 	000000 			HLRZ C,(P)
  1429	001177 	271140 	000060 		OCTTY1:	ADDI C,"0"
  1430	001200 	254000 	760556 			JRST TYO
  1431					>;IFN DSKDSW
  1432					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  13
	DSKDMP	

  1433					;⊗ C1ZERO C1APT C1BPT C1PH C1ZEND C1FRST C1ERR C1PTP C1PPTP C1CIFI ZZZ C1MRTC C
	1CCHR C1MRTD C1WCHN RCLTAB XBUF LPDL LPDL PDL ERRCNT RECORD NXTTRK SYMPNT SYSLOC PATCH PATCH1 LODCNT LODNXT XFR
	CNT STARTA KASIM MUCKFL ZERFLG FHILOC UPPRST TIBFLN TIBUF FNAM FEXT FPPN DEFDEV DEFEXT DEFPPN FDEV
  1434					
  1435					;DISK ADDRESSES AND POINTERS
  1436					
  1437					IFE RHDSK,<
  1438					C1ZERO::			;ZERO FROM HERE TO C1ZEND AT DISKUP
  1439					C1APT:	BLOCK C1PPTR+1+1	;CHN CTL WD, INT WD, PGM PTR, END MARK
  1440					C1BPT:	BLOCK C1PPTR+1+1	;PROGRAM TABLE FOR SECOND CHANNEL
  1441					C1PH:	BLOCK C1INST		;PROGRAM HEADER
  1442						0			;JUMP TO PROGRAM
  1443					
  1444					C1ZEND::
  1445					
  1446					C1FRST:	-1			;-1 FIRST TIME THROUGH
  1447					C1ERR:	0			;ERROR COUNT
  1448					
  1449					C1PTP:	C1APT			;POINTERS TO PRG TABLES INDEXED BY CHANNEL NUMB
	ER
  1450						C1BPT
  1451					
  1452					C1PPTP:	C1APT+C1PPTR
  1453						C1BPT+C1PPTR
  1454					
  1455					C1CIFI:	CONO C1A,C1SCH!C1CCIF		;INST TO CLEAR CIF INDEXED BY CHANNEL N
	UMBER
  1456						CONO C1B,C1SCH!C1CCIF
  1457					
  1458					;WCMAS FOR CONTROL COMMANDS
  1459					DEFINE C1WCMA (COUNT,ADDR,REC)<
  1460					ZZZ←←0
  1461					IFIDN <REC><R><ZZZ←←1>
  1462					BYTE (1)1 (1)ZZZ (13)COUNT (22)ADDR
  1463					>
  1464					
  1465					C1MRTC:	C1MRT!C1NATM!6,,0		;MRT READ COMMAND
  1466					C1CCHR:	BYTE (8)0,0,0,0			;C C H R
  1467						BYTE (8)0,DATRPB+1-1,0,0	;SECTOR, LAST REC, WRAP REC, 0
  1468						C1JMP,,C1MRTD			;JUMP TO 1ST DATA POINTER
  1469					C1MRTD:	BLOCK DATRPB+1
  1470						0
  1471					
  1472						'C1WCHN'	;FOR AIDING LOCATING OF THIS TABLE IN CORE FROM DDT
  1473					;TABLE OF WHICH DRIVE IS ON WHICH CHANNEL, 0 FOR C1A, 1 FOR C1B
  1474					C1WCHN:
  1475					IFN FT1DSK,<
  1476						1
  1477						1
  1478						1
  1479						1
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  13-2
	DSKDMP	

  1480						1
  1481						1
  1482						1
  1483						1
  1484					>;IFN FT1DSK
  1485					IFE FT1DSK,<
  1486						0
  1487						1
  1488						0
  1489						1
  1490						0
  1491						1
  1492						0
  1493						1
  1494					>;IFE FT1DSK
  1495					IFN .-C1WCHN-NPACKS,<.FATAL GUESS WHAT YOU FORGOT TO CHANGE>
  1496					
  1497					
  1498					RCLTAB:	RTLSIZ,,RTLSIZ
  1499					REPEAT DATRPB,<
  1500						200,,200
  1501					>
  1502					>;IFE RHDSK
  1503					
  1504					IFN DSKDSW,<
  1505	003400 	       	       		XBUF:	BLOCK BLKSIZ
  1506					>;IFN DSKDSW
  1507					
  1508	       	000000 	000020 		LPDL←←20
  1509					
  1510					IFE KLBOOT,<
  1511	003420 	       	       		PDL:	BLOCK LPDL
  1512					
  1513	003421 	000000 	000000 		ERRCNT:	0
  1514	003422 	000000 	000000 		RECORD:	0
  1515	003423 	000000 	000000 		NXTTRK:	0			;BYTE POINTER TO DPTR
  1516					
  1517	003424 	000000 	000000 		SYMPNT:	0			;SYMBOL TABLE POINTER FROM DSKDMP.DMP
  1518					
  1519					IFN DSKDBG,<
  1520	003425 	000000 	000000 		SYSLOC:	0			;DISK ADDRESS OF SSSYS.UFD[1,1]
  1521					>;IFN DSKDBG
  1522					IFN DSKDSW,<
  1523	003465 	       	       		PATCH:	BLOCK 40
  1524	003525 	       	       		PATCH1:	BLOCK 40
  1525					>;IFN DSKDSW
  1526					
  1527	003526 	000000 	000000 		LODCNT:	0			;NUMBER OF WORDS IN FILE LEFT TO LOAD
  1528	003527 	000000 	000000 		LODNXT:	0			;NEXT ADDRESS TO LOAD INTO
  1529	003530 	000000 	000000 		XFRCNT:	0			;NUMBER OF WORDS THIS TRANSFER
  1530	003531 	000000 	000000 		STARTA:	0			;DSKDMP'S STARTING ADDRESS
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  13-3
	DSKDMP	

  1531	003532 	000000 	000000 		KASIM:	0			;-1 IF KA SIMULATION UCODE IS RUNNING
  1532					>;IFE KLBOOT
  1533					
  1534					IFN DSKDSW,<
  1535	003533 	000000 	000000 		MUCKFL:	0			;-1 IF MUCKING AROUND WITH LOW CORE CELLS
  1536	003534 	000000 	000000 		ZERFLG:	0			;-1 TO ZERO CORE FIRST
  1537	003535 	000000 	000000 		FHILOC:	0			;HILOC OF FILE WE ARE LOADING
  1538	003536 	000000 	000000 		UPPRST:	0			;CORE ADDRESS OF START OF UPPER
  1539					
  1540	       	000000 	000020 		TIBFLN←←20
  1541	003556 	       	       		TIBUF:	BLOCK TIBFLN
  1542	003557 	000000 	000000 		FNAM:	0
  1543	003560 	000000 	000000 		FEXT:	0
  1544	003561 	000000 	000000 			0
  1545	003562 	000000 	000000 		FPPN:	0
  1546					IFN RHDSK,<
  1547	003563 	626353 	000000 		DEFDEV:	SIXBIT /RSK/	;default structure (DSKDMP)
  1548					>;IFN RHDSK
  1549	003564 	445560 	000000 		DEFEXT:	SIXBIT /DMP/	;DEFAULT EXTENSION
  1550	003565 	000063 	637163 		DEFPPN:	SIXBIT /  SSYS/	;DEFAULT PPN
  1551					>;IFN DSKDSW
  1552					
  1553					IFN RHDSK,<
  1554	003566 	626353 	000000 		FDEV:	SIXBIT /RSK/	;default (and only) structure for BOOT, stru for DSKDMP
  1555					>;IFN RHDSK
  1556					
  1557					IFN KLBOOT,<
  1558					DATAWD(PDL,LPDL)
  1559					DATAWD(ERRCNT,1)
  1560					DATAWD(RECORD,1)
  1561					DATAWD(NXTTRK,1)		;BYTE POINTER TO DPTR
  1562					DATAWD(SYMPNT,1)		;SYMBOL TABLE POINTER FROM DSKDMP.DMP
  1563					
  1564					DATAWD(LODCNT,1)		;NUMBER OF WORDS IN FILE LEFT TO LOAD
  1565					DATAWD(LODNXT,1)		;NEXT ADDRESS TO LOAD INTO
  1566					DATAWD(XFRCNT,1)		;NUMBER OF WORDS THIS TRANSFER
  1567					DATAWD(STARTA,1)		;DSKDMP'S STARTING ADDRESS
  1568					DATAWD(KASIM,1)			;-1 IF KA SIMULATION UCODE IS RUNNING
  1569					>;IFN KLBOOT
  1570					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  14
	DSKDMP	

  1571					;⊗ FDZBEG DIORG ICCW RH2CYL MAXUNI DSKTYP NUMCYL NUMSCL NUMSTK STRNAM RMXDRV DS
	KTAB FDZEND NDSKOP NDSKLZ RMXDRV PAGSIZ HOMNAM HOMSNM HOMLUN HOMHOM HOMRXB HOMSIZ HOMFSN HOMCOD HOMSLF CODHOM I
	CA ENTFLG MAXCHN MAXDRV RH0 .RHRAE .RHMBR .RHCTE .RHMBE .RHSTP .RHDON RHERR LR R4%CSR R4%CRC R4%RIP R4%CPA R4%C
	RD R4%DSR .RPERR .RPMOL .RPDRY R4%ATN R4%DST R4%DTR R4%TYP R4%DC .RHSBR .RHSTR RCLP STLW R4%TYP .R4TYP .R5TYP .
	R6TYP .R7TY2 .R7TY1 .R3TYP RHERR NRETRY TIMOUT R4%CRC R4%CDC R4%RIP R4%CPA R4%CRD N.SCL3 N.SCL4 N.SCL7 N.CLP3 N
	.CLP4 N.CLP6 N.CLP7 N.CLP6 N.CLP7 N.STK3 N.STK7 N.STK4 N.BKPG
  1572					
  1573					IFN RHDSK,<
  1574					
  1575	       	260740 	000000 		OPDEF CALL [PUSHJ P,]
  1576	       	263740 	000000 		OPDEF RET [POPJ P,]
  1577					
  1578					;General assumptions
  1579					; Register use:
  1580					;	P1	Holds the physical channel number 0 ≤ channel < MAXCHN (8)
  1581					;	P2	Holds the physical unit number  0 ≤ unit < MAXDRV (8)
  1582							;(>> matching brackets)
  1583					
  1584					IFE KLBOOT,<
  1585					;Data storage
  1586	       	000000 	763273 		FDZBEG←←.	;start of area initialized to zero by FDSK
  1587	003567 	000000 	000000 		DIORG:	0	;Set up by FDSK with the location of the MFD, from HOMXRB
  1588	003570 	000000 	000000 		ICCW:	0	;Set to a Channel Command Word for transfer
  1589	003571 	000000 	000000 			0	;halt CCW
  1590	003572 	000000 	000000 		RH2CYL:	0	;desired cylinder
  1591	003573 	000000 	000000 		MAXUNI:	0	;Maximum unit number of the structure that was found.
  1592							;(This is one less than the number of units in structure.)
  1593	003574 	000000 	000000 		DSKTYP:	0	;Initially zero, the Drive Type of the units in this str.
  1594	003575 	000000 	000000 		NUMCYL:	0	;Number of cylinders/unit for this drive type
  1595	003576 	000000 	000000 		NUMSCL:	0	;Number of sectors/cylinder for this drive type
  1596	003577 	000000 	000000 		NUMSTK:	0	;Number of sectors/track for this drive type
  1597	003600 	000000 	000000 		STRNAM:	0	;Name of structure represented by DIORG and DSKTAB
  1598					
  1599	       	000000 	000020 		RMXDRV←←20		;max number of drives we're prepared to handle
  1600	003620 	       	       		DSKTAB:	BLOCK RMXDRV	;Table we set up with one word per drive, indexed
  1601								;by logical drive number.  Each word will contain:
  1602								;  400000!<physical channel>,,<physical unit>
  1603	       	000000 	763324 		FDZEND←←.-1	;end of area initialized to zero by FDSK
  1604					
  1605	003621 	000000 	000000 		NDSKOP:	0	;counts all diskops, successful or not
  1606	003622 	000000 	000000 		NDSKLZ:	0	;counts losing diskops
  1607					>;IFE KLBOOT
  1608					IFN KLBOOT,<
  1609					;Data storage
  1610					;FDZBEG←←.	;start of area initialized to zero by FDSK
  1611					DATAWD(DIORG,1)	;Set up by FDSK with the location of the MFD, from HOMXRB
  1612					DATAWD(ICCW,2)	;Set to a Channel Command Word for transfer, 2nd word is halt
  1613					DATAWD(RH2CYL,1);desired cylinder
  1614					DATAWD(MAXUNI,1);Maximum unit number of the structure that was found.
  1615							;(This is one less than the number of units in structure.)
  1616					DATAWD(DSKTYP,1);Initially zero, the Drive Type of the units in this str.
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  14-2
	DSKDMP	

  1617					DATAWD(NUMCYL,1);Number of cylinders/unit for this drive type
  1618					DATAWD(NUMSCL,1);Number of sectors/cylinder for this drive type
  1619					DATAWD(NUMSTK,1);Number of sectors/track for this drive type
  1620					DATAWD(STRNAM,1);Name of structure represented by DIORG and DSKTAB
  1621					
  1622					RMXDRV←←20		;max number of drives we're prepared to handle
  1623					DATAWD(DSKTAB,RMXDRV)	;Table we set up with one word per drive, indexed
  1624								;by logical drive number.  Each word will contain:
  1625								;  400000!<physical channel>,,<physical unit>
  1626					;FDZEND←←.-1	;end of area initialized to zero by FDSK
  1627					
  1628					DATAWD(NDSKOP,1);counts all diskops, successful or not
  1629					DATAWD(NDSKLZ,1);counts losing diskops
  1630					>;IFN KLBOOT
  1631					
  1632	       	000000 	001000 		PAGSIZ←←1000	;words per page
  1633					
  1634					;A%FP0 is defined as the page after KLEPT and is a
  1635					;one page data buffer.  Home block is read into
  1636					;second record of this page.  The following
  1637					;definitions of home block words are used:
  1638					
  1639					  ;HOME BLOCK DEFINITIONS
  1640					
  1641	       	000000 	757200 		  HOMNAM←←A%FP0+200+0	;SIXBIT /HOM/
  1642	       	000000 	757203 		  HOMSNM←A%FP0+200+3	;SIXBIT /STRUCTURE NAME/
  1643	       	000000 	757204 		  HOMLUN←A%FP0+200+4	;XWD TOTAL PACKS, LOGICAL PACK #
  1644	       	000000 	757205 		  HOMHOM←A%FP0+200+5	;BLOCK # OF OTHER HOME BLK,, BLK # OF THIS HB
  1645	       	000000 	757210 		  HOMRXB←A%FP0+200+10	;ADR OF INDEX BLOCK OF ROOT DIRECTORY (MFD on WAITS)
  1646	       	000000 	757213 		  HOMSIZ←A%FP0+200+13	;SIZE OF A UNIT IN SECTORS (records)
  1647					
  1648	       	000000 	757373 		  HOMFSN←A%FP0+200+173	;FILE SYSTEM TYPE
  1649	       	000000 	757376 		  HOMCOD←A%FP0+200+176	;0 ,, CODHOM
  1650	       	000000 	757377 		  HOMSLF←A%FP0+200+177	;THIS HOME BLOCK #
  1651					
  1652	       	000000 	707070 		  CODHOM←←707070  ;the special code to mark home blocks
  1653					
  1654					;Constants
  1655	       	000000 	000000 		ICA←←0			;Offset from EPT origin to channel 0's Logout area
  1656	       	000000 	400000 		ENTFLG←←400000		;Flag in left half of DSKTAB table used to
  1657								;distinguish channel 0 unit 0 from a missing entry
  1658	       	000000 	000010 		MAXCHN←←8		;maximum number of channels
  1659	       	000000 	000010 		MAXDRV←←8		;maximum number of drives per channel
  1660					
  1661					;Device Definitions
  1662					;	RH20
  1663	       	000000 	000540 				RH0←←540		;device number
  1664					;	RH20 CONO/CONI
  1665	       	000000 	004000 				.RHRAE←←1B24		;Clear RAE (In CONI, Register Access Er
	r)
  1666	       	000000 	002000 				.RHMBR←←1B25		;Clear RH20 & attached Devices
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  14-3
	DSKDMP	

  1667	       	000000 	001000 				.RHCTE←←1B26		;Clear transfer error
  1668	       	000000 	000400 				.RHMBE←←1B27		;Enable Massbus Transmitters (also CONI
	)
  1669	       	000000 	000020 				.RHSTP←←1B31		;Stop a hung transfer
  1670	       	000000 	000010 				.RHDON←←1B32		;Clear Done (In CONI, Transfer Done)
  1671	       	000000 	775120 				RHERR←←775120		;All the RH20 error bits (in CONI)
  1672										;Data Bus Parity; Drive Exception
  1673										;Long WC; Whort WC; Channel Error
  1674										;Drive Response Error; RAE; Overrun
  1675										;and Either Command Buffer Full
  1676					;	RH20 DATAO/DATAI
  1677	       	004000 	000000 				LR←←1B6			;Load Register Bit
  1678					
  1679					;	RP06 Registers
  1680	       	000000 	000000 				R4%CSR←←0B5		;Drive Command Register
  1681					;		RP06 Drive Commands
  1682	       	000000 	000007 					R4%CRC←←07	;Recalibrate
  1683	       	000000 	000021 					R4%RIP←←21	;Read-in Preset
  1684	       	000000 	000023 					R4%CPA←←23	;Pack Acknowledge
  1685	       	000000 	000071 					R4%CRD←←71	;Read Data
  1686	       	010000 	000000 				R4%DSR←←1B5		;Drive Status Register
  1687	       	000000 	040000 					.RPERR←←1B21	;Composite error
  1688	       	000000 	010000 					.RPMOL←←1B23	;Medium On-Line
  1689	       	000000 	000200 					.RPDRY←←1B28	;Drive Ready
  1690	       	040000 	000000 				R4%ATN←←4B5		;Attention Summary Register
  1691	       	050000 	000000 				R4%DST←←5B5		;Drive Sector & Track
  1692	       	060000 	000000 				R4%DTR←←6B5		;Drive Type Register
  1693	       	000000 	000777 					R4%TYP←←777	;Mask for drive type bits only
  1694	       	120000 	000000 				R4%DC←←12B5		;Cylinder Register
  1695	       	700000 	000000 				.RHSBR←←70B5		;RH20 Secondary Block Address Reg
  1696	       	710000 	000000 				.RHSTR←←71B5		;RH20 Secondary Transfer Control Reg
  1697	       	002000 	000000 					RCLP←←1B7	;Reset Command List Pointer
  1698	       	000200 	000000 					STLW←←1B10	;Store Ending Status
  1699					
  1700	       	000000 	000777 		R4%TYP←←777B35			;DEVICE TYPE FIELD IN TYPE REGISTER
  1701	       	000000 	000020 		.R4TYP←←20			;RP04 DEVICE TYPE CODE
  1702	       	000000 	000021 		.R5TYP←←21			;RP05 DEVICE TYPE CODE
  1703	       	000000 	000022 		.R6TYP←←22			;RP06 DEVICE TYPE CODE
  1704	       	000000 	000041 		.R7TY2←←41			;RP07 DEVICE TYPE CODE (moving head?)
  1705	       	000000 	000042 		.R7TY1←←42			;RP07 DEVICE TYPE CODE (fixed head?) (our kind)
  1706	       	000000 	000024 		.R3TYP←←24			;RM03 DEVICE TYPE CODE
  1707	       	000000 	775120 		RHERR←←775120			;RH10 CONI ERROR BITS
  1708	       	000000 	000005 		NRETRY←←5			;NUMBER OF TIMES TO RETRY
  1709	       	000000 	141520 		TIMOUT←←=50000			;COUNT FOR SOJG TIMEOUT
  1710					
  1711					repeat 0,<
  1712					;R4%CSK←←02B34			;RP04 SEEK FUNCTION
  1713					R4%CRC←←03B34			;RE-CALIBRATE FUNCTION IN CONTROL REGISTER
  1714					R4%CDC←←04B34			;RP04 DRIVE CLEAR FUNCTION
  1715					R4%RIP←←10B34			;READ-IN PRESET FUNCTION
  1716					R4%CPA←←11B34			;PACK ACKNOWLEDGE FUNCTION IN CONTROL REGISTER
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  14-4
	DSKDMP	

  1717					;R4%CWR←←30B34			;RP04 WRITE FUNCTION
  1718					R4%CRD←←34B34			;RP04 READ FUNCTION
  1719					>;repeat 0
  1720					
  1721	       	000000 	000224 		N.SCL3←←=148			;SECTORS PER CYL (RM03)
  1722					;IFE BOOT06,<
  1723					;N.SCL4←←=380			;SECTORS PER CYL (RP04/RP05/RP06)
  1724					;>;IFE BOOT06
  1725	       	000000 	000524 		N.SCL4←←=340			;used SECTORS PER CYL, for RP07 BOOT usage
  1726	       	000000 	002540 		N.SCL7←←=1376			;SECTORS PER CYL RP07
  1727	       	000000 	001464 		N.CLP3←←=820			;CYLS PER UNI (RM03)
  1728	       	000000 	000620 		N.CLP4←←=400			;CYLS PER UNI (RP04/5)
  1729					
  1730					repeat 0,<
  1731					N.CLP6←←=800			;CYLS PER UNI (RP06)
  1732					N.CLP7←←=629			;CYLS PER UNI (RP07)
  1733					>;repeat 0
  1734					
  1735	       	000000 	001457 		N.CLP6←←=815			;CYLS PER UNI (RP06)
  1736	       	000000 	001166 		N.CLP7←←=630			;CYLS PER UNI (RP07)
  1737					
  1738	       	000000 	000036 		N.STK3←←=30			;SECTORS PER TRACK (RM03)
  1739	       	000000 	000053 		N.STK7←←=43			;SECTORS PER TRACK (RP07)
  1740					;IFE BOOT06,<
  1741					;N.STK4←←=20			;SECTORS PER TRACK (RP04) (and 05/06?)
  1742					;>;IFE BOOT06
  1743	       	000000 	000022 		N.STK4←←=18			;used SECTORS PER TRACK, for RP07 BOOT usage
  1744					
  1745	       	000000 	000004 		N.BKPG←←4		;number of records per page
  1746					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  15
	DSKDMP	

  1747					;⊗ BLAST FDSK FDSK1 FDSK2 FDSK2A FDSK3 FDSK4 CHKSTR MISSTR MISUN2 MISUNI
  1748					
  1749					;Routine to locate the physical units for a given structure (FDEV).
  1750					;Sets up DSKTAB and DIORG if successful.
  1751					;Types error msg if appropriate.
  1752					
  1753					BLAST::
  1754					FDSK:
  1755					IFE KLBOOT,<
  1756	003623 	403240 	763273 			SETZB P1,FDZBEG		;Channel 0 to P1, set up for BLT
	       	763273 	763274 	
  1757	003624 	200440 	000000 			MOVE T1,[FDZBEG,,FDZBEG+1] ;Prepare to clear data area
  1758	003625 	251440 	763324 			BLT T1,FDZEND		;Initialize data area to zero
  1759					>;IFE KLBOOT
  1760	003626 	476000 	763277 			SETOM MAXUNI		;No highest unit in structure
  1761					;;	MAP T1,A%FP0		;Convert addr of FP0 to physical
  1762					;;	TLZ T1,777760		;Keep the 22 physical addr bits
  1763	003627 	201440 	757000 			MOVEI T1,A%FP0		;set up physical address of buffer (mapping is 
	off)
  1764	003630 	661440 	620000 			TLO T1,(<1B0+1B1+<1000B13>>) ;CCW: Data, Halt, Word Count = 1 page
  1765	003631 	202440 	763274 			MOVEM T1,ICCW		;Store first data CCW
  1766					;Examine the channel whose number is in P1
  1767	003632 	201440 	002000 		FDSK1:	MOVEI T1,.RHMBR		;RH20 Reset function
  1768	003633 	260740 	000000 			CALL RHCONO		;Reset the RH20
  1769	003634 	201440 	000400 			MOVEI T1,.RHMBE		;RH20 Enable function
  1770	003635 	260740 	003633 			CALL RHCONO		;Enable Massbus transmitters
  1771	003636 	260740 	000000 			CALL RHCONI		;Now read RH CONI, result to T1
  1772	003637 	606440 	000400 			TRNN T1,.RHMBE		;Did the enable bit come back?
  1773	003640 	254000 	000000 			JRST FDSK4		;No.  No bit means no channel.
  1774					;This channel exists.
  1775					;;	MAP T1,ICCW		;Get physical address of ICCW
  1776					;;	TLZ T1,777760		;Keep 22 phys addr bits
  1777	003641 	201440 	763274 			MOVEI T1,ICCW		;set up physical address of CCW list (map is of
	f)
  1778	003642 	661440 	200000 			TLO T1,(<1B1>)		;Make a JUMP CCW
  1779	003643 	200500 	000005 			MOVE T2,P1		;Get the current channel number
  1780	003644 	242500 	000002 			LSH T2,2		;Shift it to Channel*4
  1781	003645 	202452 	756000 			MOVEM T1,KLEPT+ICA(T2)	;Store initial CCW for channel
  1782					;Scan to see what physical units are present.
  1783	003646 	201300 	000000 			MOVEI P2,0		;Start at unit 0
  1784					;Start on a Unit.  Unit number in P2
  1785	003647 	205440 	060000 		FDSK2:	MOVSI T1,(<R4%DTR>)	;Read the Drive Type register
  1786	003650 	260740 	000000 			CALL RHREAD		;Read it
  1787	003651 	200500 	000011 			MOVE T2,T1		;Copy Drive Type to T2
  1788	003652 	260740 	003636 			CALL RHCONI		;Check for Register Access Error
  1789	003653 	606440 	004000 			TRNN T1,.RHRAE		;Test CONI bits for RAE
  1790	003654 	254000 	000000 			JRST FDSK2A		;All is well: a drive responded
  1791	003655 	201440 	004400 			MOVEI T1,.RHRAE!.RHMBE	;Must clear RAE.  Set ENABLE.
  1792	003656 	260740 	003635 			CALL RHCONO		;CONO to clear RAE & set ENABLE
  1793	003657 	254000 	000000 			JRST FDSK3		;Drive doesn't exist.  Try next.
  1794					
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  15-2
	DSKDMP	

  1795					;A unit is present.  See what kind of drive it is.  GOTDRV does the real work.
  1796	003660 	260740 	000000 		FDSK2A:	CALL GOTDRV		;See what we have here
  1797	003661 	305300 	000007 		FDSK3:	CAIGE P2,MAXDRV-1	;Done with all units yet?
  1798	003662 	344300 	763353 			AOJA P2,FDSK2		;No, go do next unit now.
  1799	003663 	305240 	000007 		FDSK4:	CAIGE P1,MAXCHN-1	;Checked all channels yet?
  1800	003664 	344240 	763336 			AOJA P1,FDSK1		;No, advance to next channel
  1801					;Now see if we found a consistent structure.
  1802	003665 	335440 	763277 			SKIPGE T1,MAXUNI	;Now, check for full structure
  1803	003666 	254000 	000000 			JRST MISSTR		;Structure not found
  1804	003667 	336011 	763305 		CHKSTR:	SKIPN DSKTAB(T1)	;Any physical addr for this LUN?
  1805	003670 	254000 	000000 			JRST MISUNI		;Bad structure: missing unit
  1806	003671 	365440 	763373 			SOJGE T1,CHKSTR		;Loop thru all units
  1807	003672 	200500 	763300 			MOVE T2,DSKTYP		;Get the type of this disk
	       	000022 	000524 	
  1808	003673 	200440 	000000 			MOVE T1,[N.STK4,,N.SCL4] ;Get sec/trk,,sectors/cylinders for 04, 05, 06
  1809	003674 	306500 	000024 			CAIN T2,.R3TYP		;RP03?
	       	000036 	000224 	
  1810	003675 	200440 	000000 			MOVE T1,[N.STK3,,N.SCL3] ;Yes
  1811	003676 	306500 	000042 			CAIN T2,.R7TY1		;RP07?
	       	000053 	002540 	
  1812	003677 	200440 	000000 			MOVE T1,[N.STK7,,N.SCL7] ;Yes
  1813	003700 	552440 	763302 			HRRZM T1,NUMSCL		;Save sec/cyl
  1814	003701 	556440 	763303 			HLRZM T1,NUMSTK		;Save sec/trk
  1815	003702 	263740 	000000 			RET			;all done with FDSK
  1816					
  1817					MISSTR:
  1818					IFE KLBOOT,<
	       	423136 	364744 	
	       	627104 	071750 	
	       	713534 	372352 	
	       	713124 	067336 	
	       	721014 	667752 	
	       	673105 	620100 	
	       	000000 	000000 	
  1819	003703 	201100 	000000 			MOVEI B,[ASCIZ/Desired structure not found.  /]
  1820					>;IFE KLBOOT
  1821					IFN KLBOOT,<
  1822						MOVEI B,[ASCIZ/Struct? /]
  1823					>;IFN KLBOOT
  1824					MISUN2:
  1825					IFN DSKDSW,<
  1826	003704 	260740 	760551 			PUSHJ P,TYPE		;type error msg
  1827	003705 	336200 	763272 			SKIPN D,FDEV
	       	001541 	567115 	
  1828	003706 	200200 	000000 			MOVE D,['-ANY-']	;indicate blank structure name, which matches a
	ny
  1829	003707 	254000 	760666 			JRST TYPSIX		;type device name
  1830					>;IFN DSKDSW
  1831					IFE DSKDSW,<
  1832						JRST TYPE		;type error msg and return
  1833					>;IFE DSKDSW
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  15-3
	DSKDMP	

  1834					
  1835					MISUNI:
  1836					IFE KLBOOT,<
	       	517516 	272706 	
	       	723536 	262500 	
	       	643036 	320352 	
	       	673236 	424346 	
	       	245015 	564746 	
	       	717235 	663534 	
	       	201000 	000000 	
  1837	003710 	201100 	000000 			MOVEI B,[ASCIZ/Structure has unit(s) missing.  /]
  1838					>;IFE KLBOOT
  1839					IFN KLBOOT,<
  1840						MOVEI B,[ASCIZ/Units? /]
  1841					>;IFN KLBOOT
  1842	003711 	402000 	763273 			SETZM DIORG		;don't let us try to use this structure
  1843	003712 	254000 	763410 			JRST MISUN2		;type error msg and return
  1844					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  16
	DSKDMP	

  1845					;⊗ GOTDRV GOTDV3 GOTDV4 GOTDV0 GOTDV2
  1846					
  1847					SUBTTL	GOTDRV	Examine the Drive and HHome Block to see if we want it
  1848					
  1849					;Initially DSKTYP is zero.  When we find the first disk, we set DSKTYP to the
  1850					;negative of the drive type number.  If we like the home blocks, we set
  1851					;DSKTYP to positive and thereafter, we look at only physical units that are
  1852					;similar.
  1853	003713 	405500 	000777 		GOTDRV:	ANDI T2,R4%TYP		;Keep only the device type code
  1854	003714 	306500 	000021 			CAIN T2,.R5TYP		;Is this an RP05?
  1855	003715 	201500 	000020 			MOVEI T2,.R4TYP		;Yes, make it look like an RP04
  1856					IFE KLBOOT,<	;squeeze into KLDCP
  1857	003716 	306500 	000041 			CAIN T2,.R7TY2		;Alternate kind of RP07?
  1858	003717 	201500 	000042 			MOVEI T2,.R7TY1		;Make it the usual kind of RP07
  1859					>;IFE KLBOOT
  1860	003720 	337440 	763300 			SKIPG T1,DSKTYP		;Are we looking for a specific disk?
  1861	003721 	254000 	000000 			JRST GOTDV3		;Not yet, check if this is allowable
  1862	003722 	316500 	000011 			CAMN T2,T1		;Yes.  Is this the same as we want?
  1863	003723 	254000 	000000 			JRST GOTDV0		;Same as we want.  Read its home block.
  1864	003724 	263740 	000000 			RET			;No.  Don't use this one.
  1865					
  1866					;The desired Drive Type has not been selected yet.  Check type against all know
	n
  1867					;disk types:
  1868					
  1869	003725 	302500 	000042 		GOTDV3:	CAIE T2,.R7TY1		;RP07?
  1870	003726 	306500 	000024 			CAIN T2,.R3TYP		;or RM03?
  1871	003727 	254000 	000000 			JRST GOTDV4		;Yes
  1872	003730 	302500 	000022 			CAIE T2,.R6TYP		;RP06
  1873	003731 	306500 	000020 			CAIN T2,.R4TYP		;or RP04?
  1874	003732 	254000 	003727 			JRST GOTDV4		;Yes.  Save type (negated)
  1875	003733 	263740 	000000 			RET			;This is no kind of disk for us
  1876					
  1877	003734 	212500 	763300 		GOTDV4:	MOVNM T2,DSKTYP		;Save negative drive type till home blocks chec
	ked
	       	004000 	000023 	
  1878	003735 	200440 	000000 		GOTDV0:	MOVE T1,[R4%CSR!LR!R4%CPA] ;Send Pack Acknowledge.
  1879	003736 	260740 	000000 			CALL RHWRIT		;Do DATAO.  Sets Volume Valid
  1880	003737 	205440 	010000 			MOVSI T1,(<R4%DSR>)	;Read device status register
  1881	003740 	260740 	003650 			CALL RHREAD		;Via DATAO/DATAI
  1882	003741 	606440 	010000 			TRNN T1,.RPMOL		;Is Disk Pack On-Line?
  1883	003742 	263740 	000000 			RET			;No.  Forget it.
  1884	003743 	402000 	757000 			SETZM A%FP0		;Clear data page
	       	757000 	757001 	
  1885	003744 	200440 	000000 			MOVE T1,[A%FP0,,A%FP0+1] ;Set up for the BLT
  1886	003745 	251440 	757777 			BLT T1,A%FP0+PAGSIZ-1	;Zero data page before the Read
  1887	003746 	260740 	000000 			CALL RD0		;Read disk page 0 (records 0,1,2,3)
  1888	003747 	260740 	000000 			CALL CHKHOM		;Check the home block
  1889	003750 	254000 	000000 			 JRST GOTDV2		;Bad.  Try the Backup home block
  1890	003751 	263740 	000000 			 RET			;Good block, but wrong Structure
  1891	003752 	217000 	763300 			MOVMS DSKTYP		;Good block, right structure, set DSKTYP positi
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  16-2
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

	ve
  1892	003753 	263740 	000000 			RET
  1893					
  1894					;Primary Home Block was bad.  Try reading the Backup home block.
  1895					;CHKHOM expects to see the home block in record 1 (words 200:377) of the page.
  1896					;So we position the backup home block in record 1 of the page, by starting
  1897					;the transfer at record 11.  Then record 12 will wind up at words 200:377
  1898	003754 	260740 	000000 		GOTDV2:	CALL RD11		;Read records 11,12,13,14
  1899	003755 	260740 	003747 			CALL CHKHOM		;Check the backup home block
  1900	003756 	263740 	000000 			 RET			;Error
  1901	003757 	263740 	000000 			 RET			;Wrong structure
  1902	003760 	217000 	763300 			MOVMS DSKTYP		;OK, set DSKTYP positive.
  1903	003761 	263740 	000000 			RET
  1904					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  17
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  1905					;⊗ RHREAD RHWRIT RHCONI RHCONO XIO1 RDDISK RD11 RD0 RD00 RD0A DOOP1 TYPGOO DOOP
	2 TYPFOO
  1906					
  1907					;RH20 Register Read and Write, CONO and CONI.  Call with P1 = RH #
  1908					
  1909					;An RH20 register is read by DATAO'ing the specified register number to the RH
  1910					;and then DATAI'ing the RH.  An RH20 register is written by DATAO'ing the
  1911					;specified register number, the LR (load register) bit, and the remainder of
  1912					;the data to the RH.  After writing the register, a DATAI is performed to
  1913					;read the new contents.
  1914					
  1915	003762 	621440 	004000 		RHREAD:	TLZ T1,(<LR>)		;Clear LR bit
  1916	003763 	671440 	000006 		RHWRIT:	TSO T1,P2		;Insert Drive Number in left half
  1917	003764 	260740 	000000 			CALL XIO1		;Set IO Device Field & do DATAO
  1918	003765 	700140 	000011 			 DATAO .-.,T1		;Send register select & data to device
  1919	003766 	260740 	003764 			CALL XIO1		;Set IO Device Field & do DATAI
  1920	003767 	700040 	000011 			 DATAI .-.,T1		;Read selected register
  1921	003770 	263740 	000000 			RET
  1922					
  1923	003771 	260740 	003766 		RHCONI:	CALL XIO1		;Set IO device and do CONI
  1924	003772 	700240 	000011 			 CONI .-.,T1		;Read device status
  1925	003773 	263740 	000000 			RET
  1926					
  1927	003774 	260740 	003771 		RHCONO:	CALL XIO1		;Set IO device and do CONO
  1928	003775 	700211 	000000 			 CONO .-.,(T1)		;Set device conditions
  1929	003776 	263740 	000000 			RET
  1930					
  1931					;XIO1 Subroutine
  1932					;	Call with P1 = channel number
  1933					;	next instruction should be:  IOOP 0,Address
  1934					;
  1935					;	Effect of routine is to execute the specified I/O instruction as
  1936					;	though its device code field were set for the given channel number.
  1937					
  1938	003777 	261777 	000000 		XIO1:	PUSH P,@(P)		;Fetch argument, to top of stack
  1939	004000 	350017 	777777 			AOS -1(P)		;Skip once to skip over the argument
  1940	004001 	261740 	000013 			PUSH P,T3		;Save AC T3
  1941	004002 	201545 	000130 			MOVEI T3,<RH0/4>(P1)	;Produce I/O device code
	       	320717 	777777 	
  1942	004003 	137540 	000000 			DPB T3,[POINT 7,-1(P),9] ;Store IO Device Number in instruction
  1943	004004 	262740 	000013 			POP P,T3		;Restore AC
  1944	004005 	256017 	000000 			XCT (P)			;Execute the target instruction
  1945	004006 	304000 	000000 			 CAIA			;Target didn't skip
  1946	004007 	350017 	777777 			AOS -1(P)		;Target skipped.  Pass the Skip upwards.
  1947	004010 	105740 	777777 			ADJSP P,-1		;Discard the stacked instruction
  1948	004011 	263740 	000000 			RET
  1949					
  1950					;RD0:	Routine to read page 0 (Records 0,1*,2,3)  *=home block
  1951					;RD11:	Routine to read back home block (Records 11,12*,13,14)
  1952					;
  1953					; Accepts in P1/ Channel number
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  17-2
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  1954					;	     P2/ Unit number
  1955					;	   ICCW/ Channel command word (memory address and length of xfer in wor
	ds)
  1956					;		 CALL RD0
  1957					;
  1958					;RDDISK: above args plus:
  1959					;	     T1/ Cylinder number
  1960					;	     P4/ Position word
  1961					
  1962					;Enter here with cylinder number in T1
  1963	004012 	202440 	763276 		RDDISK:	MOVEM T1,RH2CYL		;save cylinder number till we need it
  1964	004013 	201540 	000005 			MOVEI T3,NRETRY		;Initialize Retry counter
  1965	004014 	254000 	000000 			JRST RD0A		;Join RD0 but avoid recalibrate
  1966					
	       	704000 	000011 	
  1967	004015 	334400 	000000 		RD11:	SKIPA P4,[.RHSBR!LR!0B27!11B35]	;Desired Sector and track
	       	704000 	000000 	
  1968	004016 	200400 	000000 		RD0:	MOVE P4,[.RHSBR!LR!0B27!0B35]	;For RH20 SBAR
  1969	004017 	402000 	763276 			SETZM RH2CYL		;select cylinder 0
  1970	004020 	201540 	000005 			MOVEI T3,NRETRY		;Initialize Retry counter
  1971					;This is where we come to retry losing disk ops, starting with a recalibrate.
	       	004000 	000007 	
  1972	004021 	200440 	000000 		RD00:	MOVE T1,[R4%CSR!LR!R4%CRC] ;Recalibrate function
  1973	004022 	260740 	763467 			CALL RHWRIT		;Execute Recalibrate
  1974	004023 	205440 	010000 		RD0A:	MOVSI T1,(<R4%DSR>)	;Select unit status register
  1975	004024 	260740 	763466 			CALL RHREAD		;Get drive status
  1976	004025 	606440 	000200 			TRNN T1,.RPDRY		;Is drive ready?
  1977	004026 	254000 	763527 			JRST RD0A		;No, wait till recalibrate done
	       	004000 	000021 	
  1978	004027 	200440 	000000 			MOVE T1,[R4%CSR!LR!R4%RIP] ;Read-in Preset Function
  1979	004030 	260740 	763467 			CALL RHWRIT		;Execute read-in preset
  1980	004031 	402000 	763275 			SETZM ICCW+1		;End command list with a HALT
	       	716200 	000071 	
  1981	004032 	200340 	000000 			MOVE P3,[.RHSTR!LR!RCLP!STLW!R4%CRD] ;Write a disk READ cmd into the ST
	CR
	       	261300 	763274 	
  1982	004033 	135440 	000000 			LDB T1,[POINT 11,ICCW,13] ;get word count from CCW
  1983	004034 	271440 	000177 			ADDI T1,RECSIZ-1	;round up to whole sectors
  1984	004035 	242440 	777771 			LSH T1,-R2WLSH		;shift count to make it a sector count
  1985	004036 	210440 	000011 			MOVN T1,T1		;negative sector count
	       	061200 	000007 	
  1986	004037 	137440 	000000 			DPB T1,[POINT 10,P3,29] ;put negative sector count in disk READ cmd
  1987					
  1988					;Do a data transfer operation with disk
  1989					; Accepts in P3/	DATAO Data		;Data Xfer command for STCR
  1990					;	     P1/	Channel number
  1991					;	     P2/	Unit number
  1992					;	     P4/	Position select word	;For the SBAR
  1993					;	     RH2CYL/	Desired cylinder
  1994					
  1995	004040 	550440 	763276 			HRRZ T1,RH2CYL		;get desired cylinder number
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  17-3
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  1996	004041 	661440 	124000 			TLO T1,(LR!R4%DC)	;set up DATAO word to select cylinder
  1997	004042 	260740 	763467 			CALL RHWRIT		;Write DC, selecting desired cylinder
  1998	004043 	200440 	000010 			MOVE T1,P4		;Get Block Address Word
  1999	004044 	260740 	763467 			CALL RHWRIT		;Write it to SBAR
  2000	004045 	200440 	000007 			MOVE T1,P3		;Get the TCR word
  2001	004046 	260740 	763467 			CALL RHWRIT		;Write STCR.  Start Xfer.
  2002	004047 	201500 	141520 			MOVEI T2,TIMOUT		;Get timeout count
  2003	004050 	260740 	763475 		DOOP1:	CALL RHCONI		;Get RH status
  2004	004051 	606440 	000010 			TRNN T1,.RHDON		;RH done?  Is operation done?
  2005	004052 	367500 	763554 			SOJG T2,DOOP1		;No.  Loop till done or timeout
  2006	004053 	200340 	000011 			MOVE P3,T1		;Copy final CONI (unused??)
  2007	004054 	201440 	005410 			MOVEI T1,.RHRAE!.RHCTE!.RHMBE!.RHDON ;Clear Done and errors
  2008	004055 	260740 	763500 			CALL RHCONO		;Via CONO to RH
  2009	004056 	323500 	000000 			JUMPLE T2,DOOP2		;Did operation ever finish?
  2010	004057 	205440 	010000 			MOVSI T1,(<R4%DSR>)	;Yes.  Read disk status
  2011	004060 	260740 	763466 			CALL RHREAD		;Get device status
  2012	004061 	602440 	040000 			TRNE T1,.RPERR		;Check composite error flag
  2013	004062 	254000 	004056 			JRST DOOP2		;Some drive-detected error
  2014	004063 	260740 	763475 			CALL RHCONI		;Get RH status bits
  2015					IFE KLBOOT,<	;squeeze into KLDCP
  2016	004064 	350000 	763325 			AOS NDSKOP		;count disk ops, successful or not
  2017					>;IFE KLBOOT
  2018					IFE TYPXFR,<
  2019	004065 	606440 	775120 			TRNN T1,RHERR		;Any errors there?
  2020	004066 	263740 	000000 			RET			;No errors.  Return.
  2021					>;IFE TYPXFR
  2022					IFN TYPXFR,<
  2023						TRNE T1,RHERR		;Any errors there?
  2024						JRST DOOP2		;Yes, try again
  2025						MOVEI C,"+"		;indicate successful disk op
  2026						MOVE T3,NDSKOP		;get disk op count
  2027						SUB T3,NDSKLZ		;only count winners, discount losers
  2028					TYPGOO:	TRNN T3,000000		;patch this to limit dot typeout to every 2↑Nth
	 op
  2029						PUSHJ P,TYO		;type char for each successful disk op
  2030						RET			;No errors.  Return.
  2031					
  2032					>;IFN TYPXFR
  2033	004067 	201440 	003420 		DOOP2:	MOVEI T1,.RHMBR!.RHMBE!.RHCTE!.RHSTP ;Here if errors.  Setup CONO:
  2034	004070 	260740 	763500 			CALL RHCONO		;Massbus Reset and Enable bits
  2035	004071 	201440 	000400 			MOVEI T1,.RHMBE		;Get Massbus Enable
  2036	004072 	260740 	763500 			CALL RHCONO		;Enable Channel
	       	044000 	000377 	
  2037	004073 	200440 	000000 			MOVE T1,[R4%ATN!LR!377] ;Select Attention Register
  2038	004074 	260740 	763467 			CALL RHWRIT		;Clear Attention in all drives
  2039					IFE KLBOOT,<	;squeeze into KLDCP
  2040	004075 	350440 	763326 			AOS T1,NDSKLZ		;count losing disk ops
  2041					>;IFE KLBOOT
  2042					IFN TYPXFR,<
  2043						MOVEI C,"-"		;indicate losing disk op
  2044					TYPFOO:	TRNN T1,000000		;patch this to limit typeout to every 2↑Nth err
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  17-4
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

	or
  2045						PUSHJ P,TYO		;type char for each losing disk op
  2046					>;IFN TYPXFR
  2047	004076 	367540 	763525 			SOJG T3,RD00		;Repeat failing operation
  2048	004077 	263740 	000000 			RET			;Catch errors elsewhere
  2049					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  18
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  2050					;⊗ CHKHOM CHKHO2 BADUNI DPLUNI BADSTR BADUN2
  2051					
  2052					;Check for correct home blocks
  2053					;	no skip:	bad home block
  2054					;	one skip:	wrong structure
  2055					;	two skips:	OK
  2056					
  2057	004100 	204440 	757200 		CHKHOM:	MOVS T1,HOMNAM		;Get block name
  2058	004101 	302440 	505755 			CAIE T1,'HOM'		;Does it say SIXBIT/HOM/ ?
  2059	004102 	263740 	000000 			RET			;Bad.
  2060	004103 	200440 	757376 			MOVE T1,HOMCOD		;Get block type code
  2061	004104 	302440 	707070 			CAIE T1,CODHOM		;Check it (707070)
  2062	004105 	263740 	000000 			RET			;Bad home block
  2063	004106 	200440 	757373 			MOVE T1,HOMFSN		;Get file system type, chars 1-4
	       	020040 	040527 	
  2064	004107 	312440 	000000 			CAME T1,[BYTE (2)0(8)" "," "(2)0(8)"A","W"]
  2065	004110 	263740 	000000 			RET			;Not a WAITS pack
  2066	004111 	200440 	757374 			MOVE T1,HOMFSN+1	;Get characters 5-8 of type
  2067	004112 	200500 	757375 			MOVE T2,HOMFSN+2	;Get characters 9-12 of type
	       	052111 	020123 	
  2068	004113 	316440 	000000 			CAMN T1,[BYTE (2)0(8)"T","I"(2)0(8)" ","S"]
	       	020040 	020040 	
  2069	004114 	312500 	000000 			CAME T2,[BYTE (2)0(8)" "," "(2)0(8)" "," "]
  2070	004115 	263740 	000000 			RET			;Not a WAITS pack
  2071	004116 	350017 	000000 			AOS (P)			;At least one skip now.
  2072	004117 	200440 	757203 			MOVE T1,HOMSNM		;Get Structure name
  2073	004120 	336500 	763272 			SKIPN T2,FDEV		;skip if specific structure requested
  2074	004121 	326440 	000000 			JUMPN T1,CHKHO2		;take any structure with Non-Blank name!
  2075	004122 	312440 	000012 			CAME T1,T2		;Does it match what we want?
  2076	004123 	263740 	000000 			RET			;Wrong Structure (one skip)
  2077	004124 	336000 	763304 		CHKHO2:	SKIPN STRNAM		;Have we identified structure yet?
  2078	004125 	202440 	763304 			MOVEM T1,STRNAM		;No, save name of structure found
  2079	004126 	312440 	763304 			CAME T1,STRNAM		;Part of same structure already seen?
  2080	004127 	263740 	000000 			RET			;No, wrong Structure
  2081	004130 	550440 	757204 			HRRZ T1,HOMLUN		;Get logical unit number
  2082	004131 	301440 	000020 			CAIL T1,RMXDRV		;Make sure it's in range
  2083	004132 	254000 	000000 			JRST BADUNI		;Out of range!
  2084	004133 	332011 	763305 			SKIPE DSKTAB(T1)	;Is this unit number defined?
  2085	004134 	254000 	000000 			JRST DPLUNI		;Yes.  Bad: Duplicate units
  2086	004135 	552311 	763305 			HRRZM P2,DSKTAB(T1)	;Store Physical Unit number
  2087	004136 	201505 	400000 			MOVEI T2,ENTFLG(P1)	;Phys Channel + entry-used flag
  2088	004137 	506511 	763305 			HRLM T2,DSKTAB(T1)	;Store phys channel + flag
  2089	004140 	554440 	757204 			HLRZ T1,HOMLUN		;Get number of units in str
  2090	004141 	370000 	000011 			SOS T1			;Convert to maximum unit #
  2091	004142 	335000 	763277 			SKIPGE MAXUNI		;Is MAXUNI already set?
  2092	004143 	202440 	763277 			MOVEM T1,MAXUNI		;No: set it now.
  2093	004144 	312440 	763277 			CAME T1,MAXUNI		;Is this unit the same as others?
  2094	004145 	254000 	000000 			JRST BADSTR
  2095	004146 	200500 	757210 			MOVE T2,HOMRXB		;Get MFD address
  2096	004147 	336000 	763273 			SKIPN DIORG		;Is MFD addr already set?
  2097	004150 	202500 	763273 			MOVEM T2,DIORG		;No.  Set it.
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  18-2
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  2098	004151 	312500 	763273 			CAME T2,DIORG		;Must be same as any previous
  2099	004152 	254000 	004145 			JRST BADSTR		;But it isn't.  Bad: home blocks are inconsiste
	nt
  2100	004153 	254000 	760562 			JRST CPOPJ1		;Another skip.  A good pack
  2101					
  2102					IFE KLBOOT,<
	       	527355 	172100 	
	       	673535 	561312 	
	       	711015 	772750 	
	       	203374 	620344 	
	       	607354 	762534 	
	       	000000 	000000 	
  2103	004154 	201100 	000000 		BADUNI:	MOVEI B,[ASCIZ/Unit number out of range./]
  2104	004155 	254000 	000000 			JRST BADUN2
  2105					
	       	423234 	663312 	
	       	713135 	672100 	
	       	623455 	173312 	
	       	715014 	366302 	
	       	647324 	071702 	
	       	667124 	066336 	
	       	637234 	360730 	
	       	203535 	664750 	
	       	203356 	566704 	
	       	627445 	600000 	
  2106	004156 	201100 	000000 		DPLUNI:	MOVEI B,[ASCIZ/Different drives claim same logical unit number./]
  2107	004157 	254000 	004155 			JRST BADUN2
  2108					
	       	447354 	367734 	
	       	717236 	372312 	
	       	673504 	064336 	
	       	667124 	061330 	
	       	677075 	371500 	
	       	677344 	062322 	
	       	633154 	571312 	
	       	673504 	062344 	
	       	647554 	571534 	
	       	000000 	000000 	
  2109	004160 	201100 	000000 		BADSTR:	MOVEI B,[ASCIZ/Inconsistent home blocks on different drives./]
  2110					>;IFE KLBOOT
  2111					IFN KLBOOT,<
  2112					BADUNI:
  2113					DPLUNI:
  2114					BADSTR:	MOVEI B,[ASCIZ/CHKHOM? /]
  2115					>;IFN KLBOOT
  2116	004161 	260740 	760551 		BADUN2:	PUSHJ P,TYPE
  2117	004162 	254200 	763666 			JRST 4,.
  2118					
  2119					>;IFN RHDSK
  2120					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  19
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  2121					;⊗ FF
  2122					
  2123					;XLIST	 ;LIT and VAR listing suppressed here
	004163 	430000 	000001 	
	004164 	440600 	000002 	
	004165 	440700 	763243 	
	004166 	444400 	760725 	
	004167 	704000 	000000 	
	004170 	704000 	000000 	
	004171 	704000 	000011 	
	004172 	716200 	000071 	
	004173 	756000 	756001 	
	004174 	757000 	757001 	
	004175 	763243 	763244 	
	004176 	763273 	763274 	
	004177 	775600 	760705 	
	004200 	776000 	761105 	
	004201 	777400 	760705 	
	004202 	777600 	760705 	
	004203 	777760 	763104 	
	004204 	000017 	000017 	
	004205 	000022 	000524 	
	004206 	000036 	000224 	
	004207 	000040 	000041 	
	004210 	000044 	637163 	
	004211 	000053 	002540 	
	004212 	000063 	637163 	
	004213 	001541 	567115 	
	004214 	002600 	763274 	
	004215 	004000 	000007 	
	004216 	004000 	000021 	
	004217 	004000 	000023 	
	004220 	004400 	761104 	
	004221 	010700 	763242 	
	004222 	020040 	020040 	
	004223 	020040 	040527 	
	004224 	044000 	000377 	
	004225 	052111 	020123 	
	004226 	061200 	000007 	
	004227 	064245 	200000 	
	004230 	070000 	000000 	
	004231 	222115 	763305 	
	004232 	261300 	763274 	
	004233 	320717 	777777 	
	004234 	350700 	763243 	
	004235 	064250 	451626 	
	004236 	422332 	000000 	
	004237 	201007 	737576 	
	004240 	000000 	000000 	
	004241 	202311 	740610 	
	004242 	426100 	000000 	
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  19-2
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

	004243 	472364 	051650 	
	004244 	406452 	444634 	
	004245 	435010 	142210 	
	004246 	512132 	351400 	
	004247 	472364 	051652 	
	004250 	416204 	040644 	
	004251 	426024 	026500 	
	004252 	000000 	000000 	
	004253 	472364 	051652 	
	004254 	416204 	043222 	
	004255 	462124 	026500 	
	004256 	000000 	000000 	
	004257 	202052 	552100 	
	004260 	472364 	051650 	
	004261 	406452 	444634 	
	004262 	435010 	142210 	
	004263 	512132 	351400 	
	004264 	527355 	172100 	
	004265 	673535 	561312 	
	004266 	711015 	772750 	
	004267 	203374 	620344 	
	004270 	607354 	762534 	
	004271 	000000 	000000 	
	004272 	422531 	550100 	
	004273 	416371 	546602 	
	004274 	472104 	047236 	
	004275 	521011 	146640 	
	004276 	462131 	542634 	
	004277 	522130 	420262 	
	004300 	426500 	000000 	
	004301 	423136 	364744 	
	004302 	627104 	071750 	
	004303 	713534 	372352 	
	004304 	713124 	067336 	
	004305 	721014 	667752 	
	004306 	673105 	620100 	
	004307 	000000 	000000 	
	004310 	432231 	442646 	
	004311 	202071 	746632 	
	004312 	406350 	420234 	
	004313 	476504 	044632 	
	004314 	502310 	546612 	
	004315 	472510 	542100 	
	004316 	546132 	400000 	
	004317 	456231 	446100 	
	004320 	416371 	546602 	
	004321 	472104 	047236 	
	004322 	521011 	146640 	
	004323 	462131 	542634 	
	004324 	522130 	420262 	
	004325 	426500 	000000 	
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  19-3
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

	004326 	517516 	272706 	
	004327 	723536 	262500 	
	004330 	643036 	320352 	
	004331 	673236 	424346 	
	004332 	245015 	564746 	
	004333 	717235 	663534 	
	004334 	201000 	000000 	
	004335 	423234 	663312 	
	004336 	713135 	672100 	
	004337 	623455 	173312 	
	004340 	715014 	366302 	
	004341 	647324 	071702 	
	004342 	667124 	066336 	
	004343 	637234 	360730 	
	004344 	203535 	664750 	
	004345 	203356 	566704 	
	004346 	627445 	600000 	
	004347 	447354 	367734 	
	004350 	717236 	372312 	
	004351 	673504 	064336 	
	004352 	667124 	061330 	
	004353 	677075 	371500 	
	004354 	677344 	062322 	
	004355 	633154 	571312 	
	004356 	673504 	062344 	
	004357 	647554 	571534 	
	004360 	000000 	000000 	
	004361 	261740 	000003 	
	004362 	201140 	000134 	
	004363 	260740 	760556 	
	004364 	262740 	000003 	
	004365 	260740 	760556 	
	004366 	302140 	000015 	
	004367 	254000 	760047 	
	004370 	201140 	000012 	
	004371 	260740 	760556 	
	004372 	201140 	000015 	
  2124	004373 	254000 	760047 			LIT
  2125						VAR
  2126					LIST	;resume listing
  2127	       	000000 	764100 		FF←←.
  2128					
  2129					IFE DEBSW,<
  2130					IFN DSKDSW,<
  2131					IFN CSAVE,<
  2132					;Specify the starting address in the CSAVE file.  This word occurs
  2133					;after the first (and only) IOWD has just run out.  This is where
  2134					;the next IOWD would be.
  2135	004374 	254000 	760000 			JRST DSKDMP	;in place of IOWD, specifies the starting address
  2136					>;IFN CSAVE
  2137					>;IFN DSKDSW
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  19-4
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  2138					>;IFE DEBSW
  2139					
  2140					
  2141					;; Nota bene: Code beyond here (FF) won't be loaded during booting.
  2142					
  2143					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  20
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  2144					;⊗ CSVNAM CSVLEN CS MKCSAV NODSK NOENT NOOUT
  2145					
  2146					;; Nota bene: Code here and beyond won't be loaded during booting.
  2147					
  2148					;; This code runs from REENTER monitor command to generate a
  2149					;; bootable CSAVE file to be put on front end file system.
  2150					
  2151					;; This code is basically run only once, on a WAITS job.
  2152					
  2153					IFE DEBSW,<
  2154					IFN DSKDSW,<
  2155					IFN RHDSK,<
  2156					IFN CSAVE,<
  2157					
  2158					DEPHASE		;undo the PHASE statement -- this code run on a WAITS job
  2159					
  2160	004375 	446353 	445560 		CSVNAM:	'DSKDMP'
  2161	004376 	436366 	000000 			'CSV   '
  2162	004377 	000000 	000000 			0
  2163	004400 	000000 	000000 			0		;write it on user's alias directory
  2164					
  2165	       	000000 	004100 		CSVLEN←FF-LOWEST	;number of words of program to be booted by 11
  2166					
  2167	       	000000 	000001 		CS←←1	;I/O channel for writing out CSAVE file.
  2168					
  2169					;Write out a CSAVE file (DSKDMP.CSV) which can be put on the front-end 11's
  2170					;file system for booting directly from the 11, without use of DECtapes.
  2171					;The file is written on the user's current (alias) directory.
  2172					;Any previous file is overwritten without checking (since the CSAVE file is
  2173					;only actively used on the front end file system, not from WAITS file system).
	       	004375 	000001 	
  2174	004401 	200200 	000000 		MKCSAV:	MOVE D,[CSVNAM,,A]
  2175	004402 	251200 	000004 			BLT D,D			;set up enter block for CSAVE file
  2176	004403 	041040 	000017 			INIT CS,17		;dump mode
  2177	004404 	446353 	000000 			 'DSK   '
  2178	004405 	000000 	000000 			 0
  2179	004406 	254000 	000000 			 JRST NODSK
  2180	004407 	077040 	000001 			ENTER CS,A		;Write the CSAVE file
  2181	004410 	254000 	000000 			 JRST NOENT
	       	773676 	000272 	
	       	000000 	000000 	
  2182	004411 	057040 	000000 			OUT CS,[IOWD CSVLEN+2,CSVFIL ↔ 0] ;the 2 extra words written are:
  2183	004412 	304000 	000000 			 CAIA				  ;  IOWD at CSVFIL and JRST DSKDMP at 
	FF
  2184	004413 	254000 	000000 			JRST NOOUT
  2185	004414 	071040 	000000 			RELEAS CS,
  2186	004415 	047000 	000012 			EXIT
  2187					
	       	417035 	623750 	
	       	202231 	644650 	
	       	203515 	062500 	
	
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  20-2
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  2188	       	422471 	327032 		NODSK:	OUTSTR [ASCIZ/Can't INIT the DSK.
	       	050000 	000000 	
  2189	004416 	051140 	000000 		/]
  2190	004417 	254200 	004417 			HALT .
  2191					
	       	426352 	442644 	
  2192	       	203154 	164730 		NOENT:	OUTSTR [ASCIZ/ENTER failed.
	       	627105 	606424 	
	       	000000 	000000 	
  2193	004420 	051140 	000000 		/]
  2194	004421 	254200 	004421 			HALT .
  2195					
	       	476532 	420352 	
	       	727364 	063302 	
  2196	       	647314 	562134 		NOOUT:	OUTSTR [ASCIZ/OUT uuo failed.
	       	064240 	000000 	
  2197	004422 	051140 	000000 		/]
  2198	004423 	254200 	004423 			HALT .
  2199					
  2200					>;IFN CSAVE
  2201					>;IFN RHDSK
  2202					>;IFN DSKDSW
  2203					>;IFE DEBSW
  2204					
	DSKDMP		FAIL	23-MAR-88  15:49 DSKDMP.FAI   Page  21
	DSKDMP	GOTDRV	Examine the Drive and HHome Block to see if we want it

  2205					; END ;⊗
  2206					
  2207					IFN DSKDSW,<
  2208					IFE DEBSW,<
	       	DSKDMP 	 1    	
  2209	       	000000 	760000 			END DSKDMP
  2210					ABSOLUTE BREAK	004444 	
  2211					
DSKDMP	PROGRAM
 DSKDMP      2209
A	   116#	   701	   702	   755	   780	   783	   788	   791	   792	   793
	   794	   797	   798	   799	   802	   804	   833	   835	   887	   888
	   897	   898	   902	   910	   915	   940	   941	   950	   951	   953
	   962	   963	   967	   968	   970	   971	   972	   977	   995	   996
	   997	   998	   999	  1000	  1001	  1041	  1069	  1106	  2174	  2180
A%FP0	   230#	  1641	  1642	  1643	  1644	  1645	  1646	  1648	  1649	  1650
	  1763	  1884	  1885	  1886
APR	   156#	   685	   691	   696	   706
B	   117#	   733	   734	   735	   737	   750	   754	   803	   804	   805
	   806	   810	   813	   814	   834	   839	   840	   843	   849	   857
	   862	   878	   903	   930	   932	   939	   945	   946	   947	   948
	   949	  1007	  1011	  1015	  1019	  1023	  1032	  1033	  1035	  1036
	  1037	  1038	  1046	  1050	  1054	  1059	  1064	  1067	  1068	  1086
	  1087	  1089	  1097	  1107	  1290	  1291	  1424	  1425	  1819	  1837
	  2103	  2106	  2109
BADSTR	  2094	  2099	  2109#
BADUN2	  2104	  2107	  2116#
BADUNI	  2083	  2103#
BLAST	   726	  1753#
BLKSIZ	   249#	  1133	  1505
C	   118#	   757	   758	   760	   763	   764	   766	   768	   770	   772
	   774	   776	   778	   780	   785	   788	   790	   791	   835	   836
	   837	   840	   920	   924	   925	   926	   927	   928	   929	   931
	   932	   933	   934	   935	   936	   937	   938	   943	   946	   982
	   983	  1068	  1082	  1083	  1105	  1107	  1291	  1292	  1296	  1297
	  1298	  1317	  1322	  1325	  1327	  1332	  1334	  1349	  1350	  1351
	  1353	  1354	  1355	  1356	  1357	  1358	  1359	  1363	  1365	  1367
	  1369	  1372	  1374	  1376	  1384	  1389	  1394	  1398	  1402	  1405
	  1406	  1407	  1408	  1426	  1428	  1429
CCA	   159#	   695	   705
CHKHO2	  2074	  2077#
CHKHOM	  1888	  1899	  2057#
CHKSTR	  1804#	  1806
CMDDSP	   814	   825#
CMDS	   804	   816#	   823
CODHOM	  1652#	  2061
CPOPJ	   999	  1080	  1086	  1112	  1292	  1314#
CPOPJ1	   978	  1109	  1313#	  2100
CS	  2167#	  2176	  2180	  2182	  2185
CSAVE	    53#	    76	    92	    92#	   210	   218	  2131	  2156
CSVFIL	   220#	  2182
CSVLEN	   220	  2165#	  2182
CSVNAM	  2160#	  2174
D	   119#	  1044	  1051	  1055	  1060	  1069	  1070	  1071	  1073	  1074
	  1077	  1080	  1081	  1083	  1382	  1387	  1390	  1396	  1400	  1410
	  1827	  1828	  2174	  2175
DATRPB	   245#	   248	   951	   954
DATSIZ	   248#	   249	   988	   989	  1104
DDEXT	   488#
DDLNG	   492#	   930	   945	  1099
DDLOC	   491#
DDMPTM	   494#
DDNAM	   487#
DDPPN	   490#
DDPRO	   489#
DEBSW	    45#	    76	    92	    92#	   185	   207	   337	  2129	  2153	  2208
DEFDEV	  1032	  1547#
DEFEXT	  1037	  1549#
DEFPPN	   735	   898	  1035	  1550#
DGRP1R	   495#
DIORG	   889	   891	  1587#	  1842	  2096	  2097	  2098
DNXTGP	   496#	   965	  1003	  1124
DOFFST	   500#
DONG11	   181#	  1319
DOOP1	  2003#	  2005
DOOP2	  2009	  2013	  2033#
DPLUNI	  2085	  2106#
DPTEBP	   509#	   963	  1001	  1116
DPTR	   501#	   508
DPTRBP	   508#	   967	   982	  1101	  1125
DQINFO	   498#
DREFTM	   493#
DSATID	   497#
DSKAL1	   804#	   805
DSKDAL	   777	   797#
DSKDBG	    55#	    76	    92	    92#	  1519
DSKDGO	   775	   813#
DSKDL	   750#	   779	   784	   808	   844	   851	   856	   864	   877	   880
	  1009	  1013	  1017
DSKDL1	   759#	   781	   793	   795
DSKDL2	   755#	   806
DSKDM0	   694	   698#
DSKDM1	   726#
DSKDM2	   734#
DSKDMP	   683#	  2135	  2209
DSKDRO	   761	   783#
DSKDSW	    49#	    76	    92	    92#	    97	   104	   108	   146	   208	   255
	   531	   681	  1330	  1504	  1522	  1534	  1825	  1831	  2130	  2154
	  2207
DSKTAB	  1149	  1150	  1600#	  1804	  2084	  2086	  2088
DSKTYP	  1593#	  1807	  1860	  1877	  1891	  1902
DSTART	   209#	   215	   220	   223	   229	   230
DTCMD	   170#	  1317
DTE0	   165#	  1319
DTEXX	  1317#	  1326	  1333
DTF11	   169#	  1322
DTFLG	   168#	  1318	  1320
DUMP	   827	  1011#
ENTFLG	  1656#	  2087
ERRCNT	  1513#
EXTNEW	    50#	    76	    93	    94	    95	    95#
F	   115#	   736	   753	   762	   786	  1361	  1377
FDEV	   887	  1033	  1046	  1382	  1554#	  1827	  2073
FDSK	   890	  1754#
FDSK1	  1767#	  1800
FDSK2	  1785#	  1798
FDSK2A	  1790	  1796#
FDSK3	  1793	  1797#
FDSK4	  1773	  1799#
FDZBEG	   683	  1586#	  1756	  1757
FDZEND	  1603#	  1758
FEXT	   903	  1038	  1040	  1054	  1390	  1543#
FF	   216	  2127#	  2165
FHILOC	   920	   929	   943	  1537#
FILES	   826	  1007#
FILSE0	  1045	  1048#
FILSE1	  1052	  1055#
FILSET	   883	  1030#
FILSI1	  1069#	  1084
FILSIX	  1042	  1047	  1053	  1057	  1062	  1067#
FILTYP	  1025	  1380#
FNAM	   884	   902	  1039	  1050	  1387	  1542#
FNF	   905	  1023#
FPPN	   897	  1036	  1059	  1064	  1396	  1400	  1545#
FT1DSK	    57#	    76	    92	    92#
GOTDRV	  1796	  1853#
GOTDV0	  1863	  1878#
GOTDV2	  1889	  1898#
GOTDV3	  1861	  1869#
GOTDV4	  1871	  1874	  1877#
HILOC	   142#	   928
HOMCOD	  1649#	  2060
HOMFSN	  1648#	  2063	  2066	  2067
HOMHOM	  1644#
HOMLUN	  1643#	  2081	  2089
HOMNAM	  1641#	  2057
HOMRXB	  1645#	  2095
HOMSIZ	  1146	  1646#
HOMSLF	  1650#
HOMSNM	  1642#	  2072
ICA	  1655#	  1781
ICCW	  1138	  1143	  1588#	  1765	  1777	  1980	  1982
JOBSA	   926
JOBSYM	   924
KACODE	    58#	   172	   176	   687	   709	   728	   740	   973	  1299	  1305
	  1338	  1344	  1414
KASIM	   727	  1531#
KILL	  1015#
KLBOOT	    54#	    76	    92	    92#	    97#	    98	   228	   343	  1510	  1557
	  1584	  1608	  1755	  1818	  1821	  1836	  1839	  1856	  2015	  2039
	  2102	  2111
KLEPT	   229#	   700	   701	   702	   704	   915	  1317	  1318	  1320	  1322
	  1781
KLPAG	   158#	   693	   704
KLTYI	  1332#	  1334	  1343
KLTYI1	  1335	  1349#
KLTYO	  1304	  1325#
LDIT0	   908	   917#
LDIT0A	   923	   930#
LDIT1	   931	   939#
LDIT2	   944	   960	   970#
LDIT3	   952	   962#
LDIT4	   964	   969#
LDLP	   942	   982#	  1005
LDLP1	   969	   984#	  1002
LDLP3	   959	   988#
LOAD	   825	   874#
LOADGO	   813	   853#
LOADIT	   855	   876	   883#
LOADN	   868	   872	   876#
LODCNT	   939	   947	   956	   957	   984	   998	  1527#
LODNXT	   941	   949	   993	   996	  1528#
LOWEST	   217	   682#	  2165
LPDL	   684	  1508#	  1511
LR	  1159	  1677#	  1878	  1915	  1967	  1968	  1972	  1978	  1981	  1996
	  2037
MAXCHN	   702	  1658#	  1799
MAXDRV	  1659#	  1797
MAXUNI	  1147	  1591#	  1760	  1802	  2091	  2092	  2093
MERGE	   830	   870#
MISSTR	  1803	  1817#
MISUN2	  1824#	  1843
MISUNI	  1805	  1835#
MKCSAV	   212	  2174#
MUCKFL	   854	   867	   871	   875	   922	  1535#
N	   137#	   891	   901	   906	   958	   965	   985	   986	   987	  1003
	  1118	  1124	  1144
N.BKPG	  1745#
N.CLP3	  1727#
N.CLP4	  1728#
N.CLP6	  1735#
N.CLP7	  1736#
N.SCL3	  1721#	  1810
N.SCL4	  1725#	  1808
N.SCL7	  1726#	  1812
N.STK3	  1738#	  1810
N.STK4	  1743#	  1808
N.STK7	  1739#	  1812
NCMDS	   803	   823#
NDSKLZ	  1606#	  2040
NDSKOP	  1605#	  2016
NODSK	  2179	  2188#
NOENT	  2181	  2192#
NOMUCK	   831	   866#
NOOUT	  2184	  2196#
NPACKS	    60#
NRETRY	  1708#	  1964	  1970
NSA	   900	  1019#
NUFDWD	   144#	  1111	  1113
NUMCYL	  1594#
NUMSCL	  1152	  1595#	  1813
NUMSTK	  1155	  1596#	  1814
NXTQQQ	   480#	   487	   487#	   488	   488#	   489	   489#	   490	   490#	   491
	   491#	   492	   492#	   493	   493#	   494	   494#	   495	   495#	   496
	   496#	   497	   497#	   498	   498#	   499	   499#	   500	   500#	   501
	   501#
NXTTRK	   958	   962	   968	   983	   987	  1000	  1103	  1115	  1118	  1127
	  1515#
OCTTY1	  1425	  1429#
OCTTYP	  1424#	  1427
P	   140#	   684	   726	   739	   752	   759	   763	   765	   766	   767
	   771	   787	   789	   807	   846	   850	   855	   858	   859	   863
	   876	   879	   883	   890	   899	   904	   919	   942	   959	   966
	   969	   994	  1004	  1008	  1012	  1016	  1020	  1024	  1042	  1047
	  1053	  1056	  1057	  1058	  1061	  1062	  1063	  1065	  1072	  1075
	  1078	  1088	  1098	  1100	  1119	  1120	  1121	  1153	  1160	  1293
	  1296	  1313	  1314	  1323	  1326	  1327	  1328	  1333	  1362	  1363
	  1364	  1368	  1369	  1370	  1373	  1375	  1378	  1383	  1385	  1388
	  1392	  1393	  1395	  1397	  1399	  1401	  1409	  1411	  1422	  1426
	  1427	  1428	  1575	  1576	  1826	  1938	  1939	  1940	  1942	  1943
	  1944	  1946	  1947	  2071	  2116
P1	   129#	  1149	  1756	  1779	  1799	  1800	  1941	  2087
P2	   130#	  1150	  1783	  1797	  1798	  1916	  2086
P3	   131#	  1981	  1986	  2000	  2006
P4	   132#	  1156	  1158	  1159	  1967	  1968	  1998
PAGSIZ	  1632#	  1886
PATCH	  1523#
PATCH1	  1524#
PDL	   684	  1511#
PI	   157#	   686
PIOFF	   183#
POPCJ	  1366	  1369#
PPNTYP	  1021	  1391	  1394#
QQQ	   807	   810#	   885	   892
R2WLSH	   237#	   238	  1984
R4%ATN	  1690#	  2037
R4%CPA	  1684#	  1878
R4%CRC	  1682#	  1972
R4%CRD	  1685#	  1981
R4%CSR	  1680#	  1878	  1972	  1978
R4%DC	  1694#	  1996
R4%DSR	  1686#	  1880	  1974	  2010
R4%DST	  1691#
R4%DTR	  1692#	  1785
R4%RIP	  1683#	  1978
R4%TYP	  1693#	  1700#	  1853
RADJ	  1058	  1063	  1086#
RADJ1	  1087#	  1090
RBO	   148#	   753	   762	   786	  1361	  1377
RCLP	  1697#	  1981
RD0	  1887	  1968#
RD00	  1972#	  2047
RD0A	  1965	  1974#	  1977
RD11	  1898	  1967#
RDDISK	  1161	  1963#
RDRET	   966	  1004	  1132#
READ	  1098	  1120	  1133#
READ0	   919	   994	  1135#
RECORD	   918	   950	   986	  1134	  1145	  1514#
RECSIZ	   238#	   248	  1983
RH0	  1663#	  1941
RH2CYL	  1590#	  1963	  1969	  1995
RHCONI	  1771	  1788	  1923#	  2003	  2014
RHCONO	  1768	  1770	  1792	  1927#	  2008	  2034	  2036
RHDSK	    56#	    76	    92	    92#	   128	   151	   161	   227	   233	   239
	   243	   378	   416	   470	   503	   507	   699	   886	   894	   911
	   914	  1031	  1043	  1076	  1136	  1163	  1381	  1437	  1546	  1553
	  1573	  2155
RHERR	  1671#	  1707#	  2019
RHREAD	  1786	  1881	  1915#	  1975	  2011
RHWRIT	  1879	  1916#	  1973	  1979	  1997	  1999	  2001	  2038
RMXDRV	  1599#	  1600	  2082
RTLSIZ	   244#	   249	   509	   917	   924	   926	   928	  1104	  1132
SRCH	   899	  1097#
SRCH1	   904	  1098#
SRCH2	  1104#	  1122
SRCH3	  1105#	  1114
SRCH4	  1117	  1124#
SRCH5	  1119#	  1128
SRCHLP	  1108	  1111#
SSTRT1	   835#	   841
SSTRT2	   838	   843#
SSTRTA	   801	   833#
START	   829	   846#
STARTA	   843	   847	   848	   860	   861	   921	   927	  1530#
STLW	  1698#	  1981
STRNAM	   888	  1597#	  2077	  2078	  2079
SWEEPB	   182#	   691	   696	   706
SYMPNT	   925	   972	  1517#
SYSLOC	  1520#
T	   138#	   917	   953	   954	   955	   956	   957	   984	   988	   989
	   990	   991	   992	   993	  1099	  1111	  1112	  1119	  1121	  1132
	  1133	  1137	  1139	  1144	  1145	  1146	  1147	  1149	  1150	  1151
	  1152	  1153	  1154	  1155	  1157	  1158
T1	   133#	  1160	  1757	  1758	  1763	  1764	  1765	  1767	  1769	  1772
	  1777	  1778	  1781	  1785	  1787	  1789	  1791	  1802	  1804	  1806
	  1808	  1810	  1812	  1813	  1814	  1860	  1862	  1878	  1880	  1882
	  1885	  1886	  1915	  1916	  1918	  1920	  1924	  1928	  1963	  1972
	  1974	  1976	  1978	  1982	  1983	  1984	  1985	  1986	  1995	  1996
	  1998	  2000	  2004	  2006	  2007	  2010	  2012	  2019	  2033	  2035
	  2037	  2040	  2057	  2058	  2060	  2061	  2063	  2064	  2066	  2068
	  2072	  2074	  2075	  2078	  2079	  2081	  2082	  2084	  2086	  2088
	  2089	  2090	  2092	  2093
T2	   134#	  1779	  1780	  1781	  1787	  1807	  1809	  1811	  1853	  1854
	  1855	  1857	  1858	  1862	  1869	  1870	  1872	  1873	  1877	  2002
	  2005	  2009	  2067	  2069	  2073	  2075	  2087	  2088	  2095	  2097
	  2098
T3	   135#	  1940	  1941	  1942	  1943	  1964	  1970	  2047
TIBFLN	   758	  1540#	  1541
TIBUF	   755	   756	   757	   758	   783	   797	   802	   833	  1041	  1541#
TIMOUT	  1709#	  2002
TT	   139#	   901	   906	  1101	  1102	  1103	  1104	  1105	  1106	  1113
	  1114	  1115	  1116	  1125	  1126	  1127	  1137	  1138	  1139	  1140
	  1141	  1143	  1151	  1154	  1156
TTY	   160#
TWAIT	   846	   859	  1413#
TYI	   759	  1337#
TYICAN	  1360	  1372#
TYO	   765	   767	   771	   787	   789	  1293	  1296#	  1364	  1368	  1373
	  1375	  1385	  1392	  1395	  1399	  1403	  1409	  1430
TYPE	   739	   752	   811	   850	   858	   863	   879	  1008	  1012	  1016
	  1020	  1024	  1290#	  1826	  2116
TYPE1	  1291#	  1294
TYPSI1	  1407	  1410#
TYPSIX	  1383	  1388	  1393	  1397	  1401	  1405#	  1410	  1829
TYPXFR	    44#	    76	    92	    92#	  2018	  2022	  2042
UPPRST	   938	   948	  1538#
WDPCHN	   246#	   702
XBUF	   917	   924	   926	   928	   930	   945	   963	   965	   967	   982
	  1001	  1003	  1099	  1101	  1104	  1116	  1124	  1125	  1132	  1133
	  1505#
XFRCNT	   990	   995	  1529#
XIO1	  1917	  1919	  1923	  1927	  1938#
ZERFLG	   853	   866	   870	   874	   907	  1536#
.R3TYP	  1706#	  1809	  1870
.R4TYP	  1701#	  1855	  1873
.R5TYP	  1702#	  1854
.R6TYP	  1703#	  1872
.R7TY1	  1705#	  1811	  1858	  1869
.R7TY2	  1704#	  1857
.RHCTE	  1667#	  2007	  2033
.RHDON	  1670#	  2004	  2007
.RHMBE	  1668#	  1769	  1772	  1791	  2007	  2033	  2035
.RHMBR	  1666#	  1767	  2033
.RHRAE	  1665#	  1789	  1791	  2007
.RHSBR	  1159	  1695#	  1967	  1968
.RHSTP	  1669#	  2033
.RHSTR	  1696#	  1981
.RPDRY	  1689#	  1976
.RPERR	  1687#	  2012
.RPMOL	  1688#	  1882
CALL	  1575#	  1768	  1770	  1771	  1786	  1788	  1792	  1796	  1879	  1881
	  1887	  1888	  1898	  1899	  1917	  1919	  1923	  1927	  1973	  1975
	  1979	  1997	  1999	  2001	  2003	  2008	  2011	  2014	  2034	  2036
	  2038
IFDIF	    92
IFE	    92	   108	   151	   161	   176	   207	   228	   233	   239	   255
	   378	   416	   470	   503	   531	   894	   911	  1163	  1437	  1510
	  1584	  1755	  1818	  1831	  1836	  1856	  2015	  2018	  2039	  2102
	  2129	  2153	  2208
IFG	    94
IFL	    93
IFN	    92	    97	    98	   104	   128	   146	   172	   185	   208	   210
	   218	   227	   243	   337	   343	   507	   681	   687	   699	   709
	   728	   740	   886	   914	   973	  1031	  1043	  1076	  1136	  1299
	  1305	  1330	  1338	  1344	  1381	  1414	  1504	  1519	  1522	  1534
	  1546	  1553	  1557	  1573	  1608	  1821	  1825	  1839	  2022	  2042
	  2111	  2130	  2131	  2154	  2155	  2156	  2207
IOWD	   220	  2182
RET	  1576#	  1815	  1864	  1875	  1883	  1890	  1892	  1900	  1901	  1903
	  1921	  1925	  1929	  1948	  2020	  2048	  2059	  2062	  2065	  2070
	  2076	  2080
SWLIST	    64#	    72	    87
VALPNT	    66#	    76
ZWD	   482#	   487	   488	   489	   490	   491	   492	   493	   494	   495
	   496	   497	   498	   500	   501